Sequelize——如何按顺序执行查询
Sequelize - How to execute queries in sequence?
我正在使用sequelize 3.24.3连接MySQL数据库。
我的要求是:执行查询1,然后在查询1完成后执行查询2。下面是代码示例
Student.findOne({
where:{
userID:request.query.userID
}
}).then(function(data){
Papers.findAll({
where:{
userID:request.query.userID
}
}
)
}).then(function (papers) {
response.json({success: true, paper: papers,});
}).catch(function (err) {
console.log(err);
});
当上面的运行:findOne完成后,它调用第二个"then"块,然后执行findAll查询。我怎么能防止这种情况,并有它的查询执行顺序?
既然您使用的是Sequelize
,那么您也使用了bluebird。
您可以使用.all
收集方法,由库提供。在文档中阅读更多信息。
const Promise = require("bluebird");
Promise.all([
Student.findOne({ where : { userID: request.query.userID } }),
Papers.findAll({ where : { userID: request.query.userID } })
]).spread( function( student, papers ) {
response.json({success: true, paper: papers });
}).catch( function( error ) {
console.log(err);
});
这将同时执行Student.findOne
和Papers.findAll
,并且在它们都返回结果之后,它将使用两个结果调用spread
方法。
相关文章:
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- 在node.js-mysql中执行UPDATE查询不起作用
- onchange选择get value并执行查询,然后在同一页面上显示结果
- AJAX 请求不会在 400 个错误查询上执行失败
- 关闭浏览器时使用 ajax 执行查询的解决方案
- 使用 Javascript 在 MongoDB 中使用希腊字符执行查询不会返回任何结果
- 节点JS-异步-响应是在执行查询时发送的
- NodeJS-如何通过执行查询获得mysql结果
- SSE和Ajax轮询在浏览器中执行查询而不是js代码的区别
- Sequelize——如何按顺序执行查询
- 在Symfony2中使用Typeahead + Bloodhound和FOSJsRoutingBundle执行查询
- 如何在jQuery成功的情况下执行查询?
- Javascript自执行查询函数
- Nodejs mysql无法执行查询
- 自动执行查询
- javascript承诺汇集连接并执行查询
- Websql 事务中的多个执行查询是否异步运行
- 我如何在猫鼬执行查询
- 对每个循环项执行查询并等待结果
- 在加载页面上执行查询