これが進むべき道だと思います。 前 ミドルウェアはこのニーズにぴったり合っており、他の方法はわかりません。実際、これは私がすべてのスキーマで行っていることです。
ただし、注意する必要があるのは、ドキュメントの違いです。 およびクエリ ミドルウェア。ドキュメント ミドルウェアはinitに対して実行されます 、validate 、save およびremove オペレーション。そこで、this ドキュメントを参照します:
schema.pre('save', function(next) {
this.increment();
return next();
});
クエリ ミドルウェアはcountに対して実行されます 、find 、findOne 、findOneAndRemove 、findOneAndUpdate およびupdate オペレーション。そこで、this クエリオブジェクトを参照します。このような操作のバージョンフィールドを更新すると、次のようになります。
schema.pre('update', function( next ) {
this.update({}, { $inc: { __v: 1 } }, next );
});
出典:マングースのドキュメント 。