您可以在Project
中创建一个Task
。
我想将对项目任务的引用存储为Project
数组:
ObjectId
但是,当我创建一个新的Project: {
name: 'My Project',
tasks:[ObjectId('...'), ObjectId('...')]
}
时,应该如何创建任务和?
如果我这样做,则可以成功创建任务,但是创建引用可能会失败,从而导致孤立的Task
。
Task
我知道MongoDB现在支持多文档ACID事务,但是我想知道是否有更直接的方法来实现此目的,也许可以通过聚合?
我愿意就如何最好地处理此问题提出建议。我在用猫鼬。
答案 0 :(得分:1)
在这种情况下,您可以使用mongoose middleware
。连接save
post
钩子,然后在创建任务后将对象ID插入项目tasks
数组中。
schema.post('save', function(doc) {
// use the doc._id now to insert into `Project.tasks` etc
});