猫鼬模式方法中是否可以运行循环?

时间:2019-08-20 15:07:50

标签: javascript mongoose

我想对数组的长度运行以下for循环,但它要做的就是一一添加。

有什么主意吗?

EndorsedSkillSchema.methods = {
  async userEndorsedSkill(arr) {
    for (var i = 0; i < arr.length; i++) {
      const skill = await Skill.findOne({ _id: arr[i]._id });

      const s = skill.toJSON();

      this.skills.push(arr[i]._id);
      await this.save();
      pubsub.publish(SKILL_ENDORSED, { [SKILL_ENDORSED]: { ...s } });
      return {
        endorsed: true,
        ...s
      };
    }
  }
};

1 个答案:

答案 0 :(得分:1)

您可以使用find(){$in: ids}

 const arr = [{_id:1},{_id:2},{_id:3}];

 const ids = arr.map(e=>e._id);

 Skill.find({_id: {$in: ids}}, function(err, result){
    //callback here maybe .insertMany()
 });