Node.JS使用Sequelize操作MySQL的示例代码(3)
then方法的参数是一个function对象,该function对象有一个data参数,这个data参数就是前面create方法操作的数据对象,可以从data里面获得数据在数据库中的id是什么。
通过await和async来实现同步编程效果
通过then的方式很像是嵌套function的回调式异步编程,有些有不喜欢嵌套function的人可以采用await来实现同步编程的效果,更多关于await的用法这里不讨论。
(async () => { var data = await Notices.create({ content: '我是公告内容。', title: '系统公告的标题', gmId: '10086', status: 0, expireDate: 1527396599123, startDate: Date.now() }); res.json({ code: 0, msg: '公告发布成功', result: data }); })();
await修饰的函数调用必须写在async修改的函数里面,否则会报错,所以这里在最外层包了一个即时函数。
关于即时函数的概念可以参考《JavaScript面向对象编程指南》这本书,里面说的挺详细的。简单说就是定义后立刻调用的一个函数。
修改数据
使用模型对象的update方法可以修改数据:
Notices.update({ status: 2 }, { where: {id: 100} });
updata(values, opts)方法的第一个参数是要修改的数据集合,字段名称和数据表对应。第二个参数是相关的一些操作参数,where用于限制修改的数据的条件,和SQL语句的where作用一样。
上面的效果是修改id为100的数据的status字段的值为2。
查询数据
通过数据模型对象的find相关的方法可以实现查询效果:
查询所有数据
Notices.findAll();
改方法会返回Notices表中所有的数据,返回值依然是一个Promise对象。
条件查询
Notices.findAll({order: [['createAt', 'DESC']], limit: 10, where: {'status': 0}});
- order字段用于指定排序规则,这里指定以createAt字段做降序排序。
- limit字段用于指定查询的数据量,这里表示返回前10条数据。
- where字段用于指定条件查询,这里表示查询status为0的数据。
删除数据
通过数据模型对象的destroy方法可以销毁一条数据,具体用法和查询、修改等类似。
但是通常我们做删除操作的时候并不是真的将数据从数据库中抹除,而是通过数据的状态字段去标识,方便后续维护。所以每个表通常都会定义一个status字段。
复杂的where条件
在sequelize中,还存在一个Op对象,用于处理复杂的条件操作。
[案例一]
var seq = require('sequelize'); var Op = seq.Op; // 其它代码... Model.update({ status: 2, gmId: 10086 }, { where: { id: { [Op.in]: [1, 4, 2, 8, 13, 20] } } });
内容版权声明:除非注明,否则皆为本站原创文章。