2016-12-20 12 views
0

すべてのfindOneAndUpdate呼び出しのドキュメントを更新しようとしています。そこで私はMongoose Middlewareを使ってポストフックを書いた。私はMongooseを使用しています。4.6mongoose postからの更新findOneAndUpdateフック

mySchema.post('findOneAndUpdate', function(result) { 
    result.currentEvent = result.Events.slice(-1); 
    this.model.update({}, { currentEvent: result.currentEvent }).exec(); 
}); 

しかし、これはコレクション内のドキュメントではなく、返されたオブジェクトのみを更新します。これを行う方法はありますか?

答えて

0

マングースミドルウェアdocumentation状態:

クエリミドルウェアは、文書の微妙なミドルウェアが、 重要な方法とは異なります文書のミドルウェアでは、これは が更新されているドキュメントを参照します。クエリミドルウェアでは、mongooseは必ずしも のドキュメントへの参照を更新する必要はないので、更新されるドキュメントではなくクエリ オブジェクトを参照します。

は、これであなたのコードを交換してみてください:うまくいけば

mySchema.post('findOneAndUpdate', function(result) { 
    result.currentEvent = result.Events.slice(-1); 
    this.save(function(err) { 
     if(!err) { 
     console.log("Document Updated"); 
     } 
    }); 
}); 

、それが動作するはずです。

また、ドキュメントを検索し、このコードを使用して変更された文書を保存することができます:

mySchema.find({*condition*}, function(err, result) { 
result.currentEvent = result.Events.slice(-1); 
result.save(function (err) { 
     if(err) { 
     console.error('ERROR!'); 
     } 
    }); 
}); 
+0

this.saveは関数ではありませんか? – jdeyrup

関連する問題