Jste na správné cestě použít 'remove'
middleware pro toto. Ve funkci middlewaru this
je instance skupiny, která se odstraňuje, a k ostatním modelům máte přístup přes její model
metoda. Takže můžete udělat něco jako:
GroupSchema.pre('remove', function(next){
this.model('User').update(
{_id: {$in: this.users}},
{$pull: {groups: this._id}},
{multi: true},
next
);
});
Nebo pokud chcete podpořit případy, kdy users
pole ve vaší instanci skupiny nemusí být úplné, můžete udělat:
GroupSchema.pre('remove', function(next){
this.model('User').update(
{groups: this._id},
{$pull: {groups: this._id}},
{multi: true},
next
);
});
Ale jak poznamenává WiredPrairie, pro tuto možnost byste chtěli index pro groups
pro dobrý výkon.