Nodejs + sequelize 实现增删改查操作


Posted in NodeJs onNovember 07, 2020

1. 下载资源库

npm install sequelize --save

npm install mysql2 --save // npm install mysql 提示不完整

2. 创建数据库配置文件 db.js,配置数据库

var Sequelize = require('sequelize'); 
module.exports = new Sequelize('blog', 'root', '123456', {
  host: 'localhost', // 数据库地址
  dialect: 'mysql', // 指定连接的数据库类型
  operatorsAliases: false,
  pool: {
    max: 5, // 连接池中最大连接数量
    min: 0, // 连接池中最小连接数量
    idle: 10000 // 如果一个线程 10 秒钟内没有被使用过的话,那么就释放线程
  }
});

3. 创建一个model 文件 user.js

var Sequelize = require('sequelize');
var sequelize = require('./db');

// 创建 model
var User = sequelize.define('user', {
  id : {type : Sequelize.INTEGER, autoIncrement : true, primaryKey : true, unique : true},
  userName: {
    type: Sequelize.STRING, // 指定值的类型
    field: 'user_name' // 指定存储在表中的键名称
  },
  // 没有指定 field,表中键名称则与对象键名相同,为 email
  email: {
    type: Sequelize.STRING
  }
}, {
  // 如果为 true 则表的名称和 model 相同,即 user
  // 为 false MySQL创建的表名称会是复数 users
  // 如果指定的表名称本就是复数形式则不变
  freezeTableName: true
});

/*User.sync({force:false}).then(function(){
  console.log("success to start");
}).catch(function(err){
  console.log("failed to start ")
})*/
// 创建表
// User.sync() 会创建表并且返回一个Promise对象
// 如果 force = true 则会把存在的表(如果users表已存在)先销毁再创建表
// 默认情况下 forse = false
//var user = User.sync({ force: false });

// 添加新用户
exports.addUser = function(userName, email) {
  // 向 user 表中插入数据
  return User.create({
    userName: userName,
    email: email
  }).then(function(result){
    console.log("插入操作成功"+result);
  }).catch(function(err){
    console.log("添加数据发生错误:"+err)
  });
};

exports.findByName = function(userName) {
  return User.findOne({where: {user_name:userName
    }}).then(function(result){
       console.log("成功:" + result.id);
    }).catch(function(err){
      console.log("发生错误:" + err);
    });
};

// 通过用户名查找用户
 
exports.update = function(id){
 return User.findOne({where: {id:id
    }}).then(function(user){
      
      return user.update({
          email:'jack3@qq.com'
        }).then(function(result){
          console.log("update success: "+result);
        }).catch(function(err){
          console.log("更新操作出错:"+err);
        }); 

    });
 
};
exports.destroy = function(id){
  return User.destroy({where:{id:id}}).then(function(result){
    console.log("delete success");
  }).catch(function(err){
    console.log("delete data err: "+err);
  })
}

4. 测试文件

var user = require('./user');
//查询操作
//user.findByName("jack");
// 添加用户
//user.addUser('jack2', 'jack@163.com');
// 更新
//user.update(1001);
//删除
//user.destroy(1001);

补充知识:nodejs Sequelize 简单查询语句和 mysql常用的几个查询命令

我是前端,但总有需求让做后端的活,所以顺带着熟悉了下简单的查询语句

贴出来,如果有需要可以参考下,备注很详细,就不多解释了

废话不多说贴代码:

#去除unionid 重复的搜索结果
#query_resultsign 表名
select *, count(unionid) from query_resultsign where issign='false' group by unionid ;
 
#去除unionid 重复的搜索结果
#query_resultsign 表名
select *, count(unionid) from query_resultsign where issign='true' group by unionid ;
 
#求未签约用户的平均访问频率(即为求搜索结果列的平均值issign='false' 未签约)
#cuid 是unid的别名
#query_resultsign 表名
select AVG(bs.cuid) as unUserAvg FROM (select *, count(unionid) cuid from query_resultsign where issign='false' group by unionid ) as bs;
 
#求平均值
#(即为求搜索结果issign='true' count的平均值)
#bs为子查询的别名,不带别名会报错
#query_resultsign 表名
select AVG(bs.cuid) userAvg FROM (select *, count(unionid) cuid from query_resultsign where issign='true' group by unionid ) as bs;
 
#增加id 列 int 
#query_resultsign
ALTER TABLE query_resultsign add id int;
 
#使表 query_resultsign (上一步)增加的列变为自增列
alter table query_resultsign change id id int NOT NULL AUTO_INCREMENT primary key;
 
 #获取两列数据中有相同数据的列
 #query_resultsign 表名
select  p1.*  from  query_resultsign  p1,query_resultsign  p2  where  p1.id<>p2.id
 and  p1.x  =  p2.x 
 and  p1.y  =  p2.y ;
 
 #查找表query_resultsign unionid 相同的用户
 select  p1.*  from  query_resultsign  p1,query_resultsign  p2  where  p1.id<>p2.id
 and  p1.unionid  =  p2.unionid ;

sequelize 的调用sql语句的方法顺带提一下,网上大多教程都是用model 查询的,每次都要建立model。有点麻烦 。配置的教程请参看配置教程。

sequelize调用sql主要用query(sql,{})方法:

var Sequelize = require('sequelize');//引入sequelize 
var sequelize = require('./../../database/dataconfig'); //引入连接配置文件
 
//查找签约用户
exports.selectHeatData = function (req, res) {
  return sequelize.query("select * from `query_resultSign` where issign ='true'", { type: sequelize.QueryTypes.SELECT }).then(data => {
    // console.log('******', data);
    res.send(data);
  }).catch(err => {
    console.log('错误', err)
  })
}
//其他方法就是换了下sql语句

主要知识点就是query方法内传入查询出的结果的类型 { type: sequelize.QueryTypes.SELECT } 这样就不用手动转换成json对象了。

附带配置文件代码

dataconfig.js

var Sequelize = require('sequelize'); 
module.exports = new Sequelize('pingan_scame', 'root', '123456', {
  host: 'localhost', // 数据库地址
  dialect: 'mysql', // 指定连接的数据库类型
  operatorsAliases: false,
  pool: {
    max: 5, // 连接池中最大连接数量
    min: 0, // 连接池中最小连接数量
    idle: 10000 // 如果一个线程 10 秒钟内没有被使用过的话,那么就释放线程
  }
 
});

以上这篇Nodejs + sequelize 实现增删改查操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
nodejs实现黑名单中间件设计
Jun 17 NodeJs
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
Sep 26 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
nodejs实现邮件发送服务实例分享
Mar 29 NodeJs
nodejs个人博客开发第五步 分配数据
Apr 12 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
nodejs 最新版安装npm 的使用详解
Jan 18 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
Nodejs处理异常操作示例
Dec 25 NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
Sep 10 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 NodeJs
nodejs+koa2 实现模仿springMVC框架
Oct 21 #NodeJs
nodejs使用Sequelize框架操作数据库的实现
Oct 21 #NodeJs
用Nodejs实现在终端中炒股的实现
Oct 18 #NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 #NodeJs
NodeJS开发人员常见五个错误理解
Oct 14 #NodeJs
浅谈vue websocket nodeJS 进行实时通信踩到的坑
Sep 22 #NodeJs
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
Aug 20 #NodeJs
You might like
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
php格式化金额函数分享
2015/02/02 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
JavaScript国旗变换效果代码
2008/08/13 Javascript
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
jquery判断RadioButtonList和RadioButton中是否有选中项示例
2013/09/29 Javascript
js中的布尔运算符使用介绍
2013/11/20 Javascript
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
用javascript替换URL中的参数值示例代码
2014/01/27 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
2019/05/21 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
python实现发送邮件功能
2017/07/22 Python
python中的闭包函数
2018/02/09 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
Python抓包程序mitmproxy安装和使用过程图解
2020/03/02 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
如何在python中执行另一个py文件
2020/04/30 Python
python工具——Mimesis的简单使用教程
2021/01/16 Python
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
皮肤科医师岗位职责
2013/12/04 职场文书
大学辅导员事迹材料
2014/02/05 职场文书
需求分析说明书
2014/05/09 职场文书
大学生个人求职信
2014/06/02 职场文书
初中语文教师研修日志
2015/11/13 职场文书
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS