基本上我有两个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无法知道向阵列添加了多少条目。
我在这里遗漏了什么,或者认为这一切都错了吗?