2016-08-02 60 views
0

我試圖從對象類中使用findAndUpdate,但它不工作。貓鼬不能使用自我內部的簡單方法

收到以下錯誤

findByIdAndUpdate is not a function 

代碼

gameScheme.methods.makeNextRound = function() { 

第一件事,分配自(新行前)

var self = this; 

返回一個承諾

return self.findByIdAndUpdate(
       self._id, 
       { $push: { "rounds": { storyTitle: story.name } } } 
      ).exec(); 

無法知道如何從貓鼬獲得自我正確,因爲這種方法之前

// we need to create a model using it 
let Game = mongoose.model('Game', gameScheme); 

// make this available to our users in our Node applications 
module.exports = Game; 

定義在一個側面說明,只是用更新沒有按」工作。輪次不會被連接。

此外,我認爲使用game.rouds [0] =「某個回合」或直接推送和節省由於節點的異步性質是非常不明智的。 (文件小姐比賽)

+1

我認爲你需要使用'self.model(「Game」)。findOneAndUpdate' –

+0

你從哪裏找到這個文檔。 –

回答

2

根據您的模式定義.methods.staticsMongoose documentation for Schemas。但是,直接在模型上調用MongoDB方法。

gameScheme.methods.makeNextRound = function() { 
    return this.model("Game").findByIdAndUpdate(this._id, 
}; 

Important:與數據的實際的互動情況與您通過mongoose.model或db.model獲得的模型。這是您可以實例化的對象,或者您可以調用.find(),.findOne()等等的對象。不要混淆架構和實際模型!