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 实现增删改查操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]