sequelize 中spread 和then的区别
之前一直从事Pyhon的开发工作,web开发、爬虫、自动化测试都在写,后来因为部分系统使用NODEJS来开发,感觉异步写法与同步写法的太多不适应,幸好有async、await语法糖,方便了我们的开发和转换速度,但是对于没太经常编写Python中的异步编程,对于理解异步、回调等等知识还是有点难度。下面是我在使用sequelize这个ORM时,遇到了spread与then的区别,以及有些方法返回的对象是promise,有些不是,让人有点懵。如果使用sqlalchemy或者django中的ORM根本不会有这些问题啊。默念Python大法好。
spread普通:
sequelize.query("select * from projects where id=?", {
replacements: [1]
}).spread(function (results) {
console.log(results);
});
// 返回结果
[ TextRow {
id: 1,
title: 'python',
desc: 'pythonnnnnnnnnnnnnn',
finish: 2019-02-01T22:22:22.000Z,
createdAt: 2019-05-09T18:18:12.000Z,
updatedAt: 2019-05-09T18:18:15.000Z } ]
then普通:
sequelize.query("select * from projects where id=?", {
replacements: [1]
}).then(function (results) {
console.log(results);
});
// 返回结果
[ [ TextRow {
id: 1,
title: 'python',
desc: 'pythonnnnnnnnnnnnnn',
finish: 2019-02-01T22:22:22.000Z,
createdAt: 2019-05-09T18:18:12.000Z,
updatedAt: 2019-05-09T18:18:15.000Z } ],
[ TextRow {
id: 1,
title: 'python',
desc: 'pythonnnnnnnnnnnnnn',
finish: 2019-02-01T22:22:22.000Z,
createdAt: 2019-05-09T18:18:12.000Z,
updatedAt: 2019-05-09T18:18:15.000Z } ] ]
spread格式化:
sequelize.query("select * from projects where id=?", {
replacements: [1],
type: sequelize.QueryTypes.SELECT
}).spread(function (results) {
console.log(results);
});
// 返回结果
{ id: 1,
title: 'python',
desc: 'pythonnnnnnnnnnnnnn',
finish: 2019-02-01T22:22:22.000Z,
createdAt: 2019-05-09T18:18:12.000Z,
updatedAt: 2019-05-09T18:18:15.000Z }
then格式化:
sequelize.query("select * from projects where id=?", {
replacements: [1],
type: sequelize.QueryTypes.SELECT
}).then(function (results) {
console.log(results);
});
// 返回结果
[ { id: 1,
title: 'python',
desc: 'pythonnnnnnnnnnnnnn',
finish: 2019-02-01T22:22:22.000Z,
createdAt: 2019-05-09T18:18:12.000Z,
updatedAt: 2019-05-09T18:18:15.000Z } ]
网友评论