我正在尝试在对象类中使用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”或直接推送并因节点异步性而保存是非常不明智的。 (文件未匹配)
答案 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()等。不要混淆模式和实际模型!