【发布时间】:2019-06-13 13:33:09
【问题描述】:
我声明了一个数组,但是当我将元素推入其中时,它仍然是空的。这是我的代码:
var catsObjectId = new Array();
var data = new Array();
Recipe.find((err,doc3)=> {
data = doc3;
for (var i = 0; i < data.length; i++) {
catsObjectId.push([]);
data[i]['categories'].forEach((item, index) => {
Recipecat.findOne({_id: item}, (err,result)=> {
item = result.name;
catsObjectId.push(item);
});
})
}
console.log(catsObjectId);
});
这是配方架构:
var recipeSchema = Schema({
categories: [{
type: Schema.Types.ObjectId,
ref: 'RecipeCat',
}]
});
这是 Recipecat 架构:
var recipecatSchema = new Schema({
name: {
type: String,
required: true
}
});
我想用他们的名字替换 recipeCats 的 objectIds。
当我记录“catsObjectId”时,它显示一个空数组。
似乎是什么问题?
提前致谢!
【问题讨论】:
-
.find()和.findOne()是异步的 -
@Andreas 我应该如何编写代码?
标签: javascript arrays node.js express