将多个元素添加到mongo数组

时间:2017-09-25 20:20:14

标签: node.js mongodb express mongoose

基本上我有两个mongodb集合,用户和项目。 我想跟踪用户正在处理的项目, 以及正在处理特定问题的用户。

const User = mongoose.model('User', new Schema({
  name: {
    type: String,
  },
  _projects: [{
    type: Schema.ObjectId,
    ref: 'Project'
  }]
})

const Project = mongoose.model('Project', new Schema({
    title: {
      type: String,
    },
    _usersWorkingOn: [{
      type: Schema.ObjectId,
      ref: 'User',
    }]
})

现在,假设我想将多个现有用户ID添加到现有项目中。 最佳做法是什么?

现在我正在使用findOneAndUpdate来获取项目文档以将用户ID推送到数组。然后是一个猫鼬中间件,我从最后添加的条目中获取用户ID:

Schema.post('findOneAndUpdate', addProjectToUser)

function addProjectToUser(updatedProject, next) {
  User.findByIdAndUpdate(
   updatedProject._usersWorkingOn[updatedProject._usersWorkingOn.length - 1],
    { $push: { '_projects': updatedProject._id}},
    { 'new': true }
  ).then(() => {
    next()
  })
}

当我将一个用户添加到项目时,这是有效的。但是如果想要在一次保存中添加多个用户,则addProjectToUser无法知道向阵列添加了多少条目。

我在这里遗漏了什么,或者认为这一切都错了吗?

0 个答案:

没有答案