ste*_*red 3 javascript mongoose q
我正在尝试使用q promise库同时运行两个mongoose查询.我希望独立地进行两个查询,然后在两个查询完成后使用结果执行一个函数.
我尝试以这种方式设置q.all(),但结果始终处于暂挂状态then().我需要解决查询结果而不是挂起的承诺.
var q = require('q');
var promises = {
aircraft: q(aircraftModel.findOne({_id: tailNumber})
.exec()),
faaAircraft: q(faaAircraftModel.findOne({_id: tailNumber.substring(1)})
.exec())
};
q.all(promises).then(function(result){
console.log(result)
}, function(err){
console.log(err)
})
Run Code Online (Sandbox Code Playgroud)
结果是下面的未决承诺的对象,而不是值.如何从MongoDB中获取这些查询的值?
{ aircraft: { state: 'pending' },
faaAircraft: { state: 'pending' } }
Run Code Online (Sandbox Code Playgroud)
将function(err){}永远不会执行.
AFAIK,q.all()只处理承诺数组,而不是承诺的对象(就像你传递的那样).此外,由于Mongoose已经.exec()返回了一个承诺,你不必使用它们q(...)(尽管如果你这样做也不会受到伤害).
试试这个:
var promises = [
aircraftModel.findOne({_id: tailNumber}).exec(),
faaAircraftModel.findOne({_id: tailNumber.substring(1)}).exec()
];
q.all(promises).then(...);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2156 次 |
| 最近记录: |