假设我有一个这样的架构:
var Person = new Schema({ name: String }); var Assignment = new Schema({ name: String, person: ObjectID });
如果删除一个人,那么仍然存在孤立的作业,这些作业引用了一个不存在的人,这在数据库中造成了混乱。
有没有一种简单的方法来确保删除一个人时,对该人的所有相应引用也将被删除?
您可以在架构上添加自己的'remove'Mongoose 中间件,Person以将该人从引用该人的所有其他文档中删除。在中间件功能中,this就是Person要删除的文档。
'remove'
Person
this
Person.pre('remove', function(next) { // Remove all the assignment docs that reference the removed person. this.model('Assignment').remove({ person: this._id }, next); });