'remove'
を使用するのは正しい方向に進んでいます このためのミドルウェア。ミドルウェア関数で、this
は削除されるグループインスタンスであり、そのmodel
を介して他のモデルにアクセスできます。 方法。したがって、次のようなことができます:
GroupSchema.pre('remove', function(next){
this.model('User').update(
{_id: {$in: this.users}},
{$pull: {groups: this._id}},
{multi: true},
next
);
});
または、users
の場合をサポートしたい場合 グループインスタンスのフィールドが完全でない可能性があります:
GroupSchema.pre('remove', function(next){
this.model('User').update(
{groups: this._id},
{$pull: {groups: this._id}},
{multi: true},
next
);
});
ただし、WiredPrairieが指摘しているように、このオプションでは、groups
のインデックスが必要です。 良いパフォーマンスのために。