请看下面的代码片段。我希望第二个mongodb查询只有在得到第一个结果后才能执行。但正如你所能想象的那样,它并不是按照这个顺序发生的。如何强制一个调用在node.js中同步
db.collection('student_profile', function (err, stuColl) {
//This if-else can be refactored in to a seperate function
if (req.params.stuId == req.header('x-stuId')) {
var stuInQuestion = student;
} else {
var stuInQuestionId = new ObjectID.createFromHexString(req.params.stuId);
stuColl.findOne({
'_id': stuInQuestionId
}, function (err, stuInQuestionObj) {
if (!stuInQuestionObj) {
process.nextTick(function() {
callback(null);
});
} else {
var stuInQuestion = stuInQuestionObj;
}
});
}
stuColl.find({
'_id': {
$in: stuInQuestion['courses']
}
}).limit(25).sort({
'_id': -1
}).toArray(function (error, courses) {
if (error) {
process.nextTick(function() {
callback(null);
});
} else {
process.nextTick(function() {
callback(courses);
});
}
});
});
那么我的选择是什么?
有没有一种方法来编码这种方式,不需要任何控制流库?如果是的话,有人可以告诉我如何?
如果这确实需要使用控制流库,我应该使用哪一个?异步,FuturesJs,还有什么?
感谢, --su
@丹....我采取了你的建议,因为它看起来像简单的一个。有用。谢谢大家的意见。 –