mongoose > 4.0.0 の新しい不安定バージョンを使用して、更新クエリを検証しようとしています。
次のクエリを使用してスキーマを更新したいとします
schema.update({_id:'blah'},{a:'blah'},function(err){
//do your thing
})
だから私は次のスキーマを持っているとしましょう、
var schema = new Schema({
a:{type:String}
});
schema.pre('update',function(next){
var findQuery=this._conditions; // gives {_id:'blah'}
// how do i get {a:'blah'}????
next();
});
更新を実行する前にいくつかのチェックを行うことができるように、プレミドルウェアで {set:{a:'blah'}} の更新クエリを取得するにはどうすればよいですか?
または、ポストミドルウェアで更新クエリにアクセスできることを知っています。
schema.post('update',function(){
var findQuery=this._conditions; // gives {_id:'blah'}
var updateQuery=this._update; //gives {$set:{a:'blah'}}
next();
});
しかし、それは遅すぎます。実際にデータベースを更新する前に、事前ミドルウェアでこれを確認する必要があります。
プレミドルウェアの「this」オブジェクトを調べてみましたが、updateQuery オブジェクトがどこにも見つからず、this._update はプレミドルウェアでは定義されていません。
これを行う方法はありますか?ありがとう