Sie sind auf dem richtigen Weg, 'remove'
zu verwenden Middleware dafür. In der Middleware-Funktion this
wird die Gruppeninstanz entfernt und Sie können über ihr model
auf die anderen Modelle zugreifen Methode. Sie können also Folgendes tun:
GroupSchema.pre('remove', function(next){
this.model('User').update(
{_id: {$in: this.users}},
{$pull: {groups: this._id}},
{multi: true},
next
);
});
Oder wenn Sie Fälle unterstützen möchten, in denen die users
Feld in Ihrer Gruppeninstanz möglicherweise nicht vollständig ist, können Sie Folgendes tun:
GroupSchema.pre('remove', function(next){
this.model('User').update(
{groups: this._id},
{$pull: {groups: this._id}},
{multi: true},
next
);
});
Aber wie WiredPrairie anmerkt, möchten Sie für diese Option einen Index für groups
für gute Leistung.