Javascript Sequelize-如何按顺序执行查询?
我正在使用sequelize 3.24.3连接到MySQL数据库 我的要求是:执行查询1,然后在查询1完成后执行查询2。下面是代码示例Javascript Sequelize-如何按顺序执行查询?,javascript,mysql,promise,sequelize.js,Javascript,Mysql,Promise,Sequelize.js,我正在使用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
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
您也在使用
您可以使用库提供的.all
收集方法。阅读更多关于它的信息
这将同时执行
Student.findOne
和Papers.findAll
,在它们都返回结果后,它将调用带有这两个结果的spread
方法。简单returnpapers.findAll({
假设.findAll
返回一个承诺感谢@JaromandaX…我必须返回两个查询才能让它工作
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);
});