javascript - 有没有办法在 Mongoose 模式方法中运行 for 循环?

标签 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
      };
    }
  }
};

最佳答案

您可以使用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()
 });

关于javascript - 有没有办法在 Mongoose 模式方法中运行 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57576614/

相关文章:

javascript - facebook javascript API 中的分页如何工作?

javascript - aikau widget中url.context是如何初始化的?

node.js - 在 mongoose 子文档中设置跳过和限制

node.js - 合并聚合并在 MongoDB 中查找结果

mongodb - MongoError : getaddrinfo ENOTFOUND undefined undefined:27017

Javascript 动态表单字段

javascript - 输入框中的向上/向下箭头不执行任何操作

javascript - 如何从 Elasticsearch 中获取索引的字段?

javascript - TypeError : user. 保存不是函数 [mongoose]

javascript - Mongoose 更新子文档的子文档