我是 javascript 新手,一直致力于修改节点 js / mongo Web 服务。我正在遍历一个数组并在每个索引处执行一个带有 id 的查询,这样我就可以取回完整的对象,如下所示:
var topicObjArray = [orm.Topic];
for(var i = 0; i < topicIdsArray.length; i++) {
orm.Topic
.find({ appId: appId, _id: topic[i].id})
.exec(function(error, topic) {
if(error) {
console.log('oops ' + error);
}
else if(topic && topic.length > 0) {
topicObjArray.push(topic);
count++;
}
else {
count++;
}
if(count == topicIdsArray.length) {
// yay we've got all our topics! Carry on!
// But oh no something is amiss!
}
});
}
在正常情况下,计数会递增,直到等于原始数组计数并且该方法可以完成。在这种情况下,由于某种原因,在初始化 topicObjArray 时,第一个索引在我插入任何对象之前就被“函数”占据了。因此,如果我查询 6 个对象,我只会取回其中的 5 个,因为第一个索引总是被占用。
我确定我必须在这里忽略一些简单的东西,但是网络搜索没有提供任何解决方案的提示。问题肯定出在数组的初始化上,但是我不明白是什么问题。我尝试了不同的方法来实例化它,结果相同。这是我的调试器的屏幕截图,最能描述正在发生的事情(我正在使用 WebStorm IDE):
如果您需要更多信息,请告诉我。我感谢社区可以提供的任何见解。