我声明了一个数组,但是当我在其中推入元素时,它仍然为空。这是我的代码:

  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”时,它显示一个空数组。

似乎是什么问题?

提前致谢!

最佳答案

每次通过for循环时,您推入一个空数组。尝试删除此行。

catsObjectId.push([]);

09-25 20:46