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.