Nodejs + sequelize 实现增删改查操作
1.下载资源库
npminstallsequelize--save
npminstallmysql2--save//npminstallmysql提示不完整
2.创建数据库配置文件db.js,配置数据库
varSequelize=require('sequelize'); module.exports=newSequelize('blog','root','123456',{ host:'localhost',//数据库地址 dialect:'mysql',//指定连接的数据库类型 operatorsAliases:false, pool:{ max:5,//连接池中最大连接数量 min:0,//连接池中最小连接数量 idle:10000//如果一个线程10秒钟内没有被使用过的话,那么就释放线程 } });
3.创建一个model文件user.js
varSequelize=require('sequelize'); varsequelize=require('./db'); //创建model varUser=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 //为falseMySQL创建的表名称会是复数users //如果指定的表名称本就是复数形式则不变 freezeTableName:true }); /*User.sync({force:false}).then(function(){ console.log("successtostart"); }).catch(function(err){ console.log("failedtostart") })*/ //创建表 //User.sync()会创建表并且返回一个Promise对象 //如果force=true则会把存在的表(如果users表已存在)先销毁再创建表 //默认情况下forse=false //varuser=User.sync({force:false}); //添加新用户 exports.addUser=function(userName,email){ //向user表中插入数据 returnUser.create({ userName:userName, email:email }).then(function(result){ console.log("插入操作成功"+result); }).catch(function(err){ console.log("添加数据发生错误:"+err) }); }; exports.findByName=function(userName){ returnUser.findOne({where:{user_name:userName }}).then(function(result){ console.log("成功:"+result.id); }).catch(function(err){ console.log("发生错误:"+err); }); }; //通过用户名查找用户 exports.update=function(id){ returnUser.findOne({where:{id:id }}).then(function(user){ returnuser.update({ email:'jack3@qq.com' }).then(function(result){ console.log("updatesuccess:"+result); }).catch(function(err){ console.log("更新操作出错:"+err); }); }); }; exports.destroy=function(id){ returnUser.destroy({where:{id:id}}).then(function(result){ console.log("deletesuccess"); }).catch(function(err){ console.log("deletedataerr:"+err); }) }
4.测试文件
varuser=require('./user'); //查询操作 //user.findByName("jack"); //添加用户 //user.addUser('jack2','jack@163.com'); //更新 //user.update(1001); //删除 //user.destroy(1001);
补充知识:nodejsSequelize简单查询语句和mysql常用的几个查询命令
我是前端,但总有需求让做后端的活,所以顺带着熟悉了下简单的查询语句
贴出来,如果有需要可以参考下,备注很详细,就不多解释了
废话不多说贴代码:
#去除unionid重复的搜索结果 #query_resultsign表名 select*,count(unionid)fromquery_resultsignwhereissign='false'groupbyunionid; #去除unionid重复的搜索结果 #query_resultsign表名 select*,count(unionid)fromquery_resultsignwhereissign='true'groupbyunionid; #求未签约用户的平均访问频率(即为求搜索结果列的平均值issign='false'未签约) #cuid是unid的别名 #query_resultsign表名 selectAVG(bs.cuid)asunUserAvgFROM(select*,count(unionid)cuidfromquery_resultsignwhereissign='false'groupbyunionid)asbs; #求平均值 #(即为求搜索结果issign='true'count的平均值) #bs为子查询的别名,不带别名会报错 #query_resultsign表名 selectAVG(bs.cuid)userAvgFROM(select*,count(unionid)cuidfromquery_resultsignwhereissign='true'groupbyunionid)asbs; #增加id列int #query_resultsign ALTERTABLEquery_resultsignaddidint; #使表query_resultsign(上一步)增加的列变为自增列 altertablequery_resultsignchangeididintNOTNULLAUTO_INCREMENTprimarykey; #获取两列数据中有相同数据的列 #query_resultsign表名 selectp1.*fromquery_resultsignp1,query_resultsignp2wherep1.id<>p2.id andp1.x=p2.x andp1.y=p2.y; #查找表query_resultsignunionid相同的用户 selectp1.*fromquery_resultsignp1,query_resultsignp2wherep1.id<>p2.id andp1.unionid=p2.unionid;
sequelize的调用sql语句的方法顺带提一下,网上大多教程都是用model查询的,每次都要建立model。有点麻烦。配置的教程请参看配置教程。
sequelize调用sql主要用query(sql,{})方法:
varSequelize=require('sequelize');//引入sequelize varsequelize=require('./../../database/dataconfig');//引入连接配置文件 //查找签约用户 exports.selectHeatData=function(req,res){ returnsequelize.query("select*from`query_resultSign`whereissign='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
varSequelize=require('sequelize'); module.exports=newSequelize('pingan_scame','root','123456',{ host:'localhost',//数据库地址 dialect:'mysql',//指定连接的数据库类型 operatorsAliases:false, pool:{ max:5,//连接池中最大连接数量 min:0,//连接池中最小连接数量 idle:10000//如果一个线程10秒钟内没有被使用过的话,那么就释放线程 } });
以上这篇Nodejs+sequelize实现增删改查操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。