【发布时间】:2016-05-08 06:49:42
【问题描述】:
如果是 Node JS 的新手(我正在使用 MongoDB、Express 和 Mongoose),我很高兴,但我遇到了以下问题:
有一个包含 10 个地址 ID 的数组,在执行其他操作之前,我需要检查 所有 地址是否都在数据库中。我知道猫鼬会进行异步查询,我尝试使用 Bluebird (https://www.npmjs.com/package/bluebird) 做出承诺,但仍然没有运气:
这里有一些尝试:
第一个
var checkIds = function(idsArray){
return new Promise(function(resolve, reject){
var result = undefined;
idsArray.forEach(function(id){
Address.count({_id: id}, function(err, count){
//count is 0 if id does not exist
if(err || !count){
reject(false);
}
});
resolve(true);
});
}
}
第二
var checkIds = function(idsArray){
return new Promise(function(resolve, reject){
var result = 0;
for(var i = 0; i < idsArray.lenght; i++){
Address.count({_id: idsArray[i]}, function(err, count){
if(err || !count){
reject(false);
}else{
result++;
}
});
}
resolve(result == 10 ? true : false);
});
}
即使数组只包含有效的 id,第一次尝试返回的 promise 总是 undefined 或第二次返回 false。
谁能帮帮我?
【问题讨论】:
标签: javascript node.js mongodb promise bluebird