Du är på rätt väg att använda 'remove'
mellanprogram för detta. I middleware-funktionen, this
är gruppinstansen som tas bort och du kan komma åt de andra modellerna via dess model
metod. Så du kan göra något som:
GroupSchema.pre('remove', function(next){
this.model('User').update(
{_id: {$in: this.users}},
{$pull: {groups: this._id}},
{multi: true},
next
);
});
Eller om du vill stödja fall där users
fältet i din gruppinstans kanske inte är komplett kan du göra:
GroupSchema.pre('remove', function(next){
this.model('User').update(
{groups: this._id},
{$pull: {groups: this._id}},
{multi: true},
next
);
});
Men som WiredPrairie noterar, för detta alternativ vill du ha ett index på groups
för bra prestanda.