これが進むべき道だと思います。 前 ミドルウェアはこのニーズにぴったり合っており、他の方法はわかりません。実際、これは私がすべてのスキーマで行っていることです。
ただし、注意する必要があるのは、ドキュメントの違いです。 およびクエリ ミドルウェア。ドキュメント ミドルウェアは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 );
});
出典:マングースのドキュメント 。