【发布时间】:2017-05-07 09:58:23
【问题描述】:
所以我一直试图弄清楚我在我创建的逻辑循环中究竟缺少什么。以下示例密切重现了我的情况:
async function x() {
const items = await Items.find().exec();
console.log(items);
for(item in items) {
console.log(item);
}
}
所以对我来说,那个小代码块的结果是 items 包含一个预期的 mongoose 文档数组,但问题是:item 显然是 0。
当我查看 mongoose 文档时,其上唯一为 0 的值是 __v 值,据我了解,它是文档所在的版本。我只是错过了什么,还是这不可能?
注意这会按预期返回:
async function x() {
const items = await Items.find().exec();
console.log(items);
items.forEach(item => {
console.log(item);
});
}
这会记录数组和单个 mongoose 文档,问题是我希望在我想要等待的第二个循环中进行另一个异步调用,所以如果这不可能,我将不得不进一步分解它猜,但如果可能的话,我想知道那个 0 是从哪里来的。
编辑:澄清一下,我已经尝试在两者上运行 toObject 但它似乎没有改变任何东西,实际上在数组上它说 toObject 不是数组的函数。
编辑 2:我不是在问为什么 for...in 不好,我是在问为什么它没有迭代我拥有的“数组”,这是因为 mongoose 返回一个集合和 for.. .in 遍历对象的可枚举属性。
【问题讨论】:
标签: arrays node.js mongodb mongoose async-await