2016-12-20 63 views
0

我正在嘗試爲所有findOneAndUpdate調用更新文檔。所以我使用Mongoose Middleware寫了一篇帖子。我使用的貓鼬4.6從貓鼬發佈更新findOneAndUpdate鉤子

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

但這僅更新返回的對象,而不是我的集合中的文檔。有沒有辦法做到這一點?

回答

0

貓鼬中間件documentation狀態:

查詢中間件,中間件文件在不同的微妙而 重要途徑:在文檔中間件,這是指被更新的文檔 。在查詢中間件中,貓鼬不一定有 對正在更新的文檔的引用,所以這是指查詢 對象而不是正在更新的文檔。

嘗試用這種替代代碼:

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