Bạn đang đi đúng hướng để sử dụng 'remove' phần mềm trung gian cho việc này. Trong chức năng phần mềm trung gian, this là phiên bản nhóm đang bị xóa và bạn có thể truy cập các mô hình khác thông qua model của nó phương pháp. Vì vậy, bạn có thể làm điều gì đó như:
GroupSchema.pre('remove', function(next){
this.model('User').update(
{_id: {$in: this.users}},
{$pull: {groups: this._id}},
{multi: true},
next
);
});
Hoặc nếu bạn muốn hỗ trợ các trường hợp users trường trong trường hợp nhóm của bạn có thể không hoàn chỉnh, bạn có thể làm:
GroupSchema.pre('remove', function(next){
this.model('User').update(
{groups: this._id},
{$pull: {groups: this._id}},
{multi: true},
next
);
});
Nhưng như WiredPrairie lưu ý, đối với tùy chọn này, bạn muốn có chỉ mục trên groups để có hiệu suất tốt.