Javascript Sequelize-如何按顺序执行查询?

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

我正在使用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
您也在使用

您可以使用库提供的
.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);
});