Mongoose不能使用自我

时间:2016-08-02 16:42:37

标签: node.js mongodb

我正在尝试在对象类中使用findAndUpdate但它不起作用。

收到以下错误

findByIdAndUpdate is not a function

代码

gameScheme.methods.makeNextRound = function() {

首先,分配自我(在任何行之前)

var self = this;

回复承诺

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

由于此方法是在

之前定义的,因此无法知道如何从Mongoose正确地获得自我
// 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] =“some round”或直接推送并因节点异步性而保存是非常不明智的。 (文件未匹配)

1 个答案:

答案 0 :(得分:2)

根据Mongoose documentation for Schemas您在架构上定义.methods.statics。但是,MongoDB方法直接在模型上调用。

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

Important:与数据的实际交互发生在您通过mongoose.model或db.model获取的模型中。这是您可以实例化的对象,或者您可以调用.find(),. findOne()等。不要混淆模式和实际模型!