小编典典

在MongoDB中删除时自动删除引用对象

node.js

假设我有一个这样的架构:

var Person = new Schema({
    name: String
});

var Assignment = new Schema({
    name: String,
    person: ObjectID
});

如果删除一个人,那么仍然存在孤立的作业,这些作业引用了一个不存在的人,这在数据库中造成了混乱。

有没有一种简单的方法来确保删除一个人时,对该人的所有相应引用也将被删除?


阅读 222

收藏
2020-07-07

共1个答案

小编典典

您可以在架构上添加自己的'remove'Mongoose
中间件Person以将该人从引用该人的所有其他文档中删除。在中间件功能中,this就是Person要删除的文档。

Person.pre('remove', function(next) {
    // Remove all the assignment docs that reference the removed person.
    this.model('Assignment').remove({ person: this._id }, next);
});
2020-07-07