如何在Node中使用Mongoose访问`findAndModify`方法?
这是/models/joke.js
:
var mongoose = require ('mongoose') , database = mongoose.connect('localhost', 'joke', { server: { poolSize: 3 } }); var jokeSchema = mongoose.Schema({ content: String, upvotes: { type: Number, default: 0 }, downvotes: { type: Number, default: 0 }, views: { type: Number, default: 0 }, published: { type: Boolean, default: true }, author_id: Number, created: { type: Date, default: Date.now } }); var Joke = mongoose.model('Joke', jokeSchema); module.exports = Joke;
我正在做这个检查是否存在 – 如果不存在,那么创build:
var Joke = require ('./models/joke'); // ... Joke.findAndModify({ query: { content: content }, update: { $setOnInsert: { content: "test", } }, new: true, upsert: true });
但我的控制台喊我以下内容:
TypeError: Object function model(doc, fields, skipId) { if (!(this instanceof model)) return new model(doc, fields, skipId); Model.call(this, doc, fields, skipId); } has no method 'findAndModify'
我可以理解错误的原因 – 我通过模型而不是集合来调用它 ,但是如何访问我的笑话的收集方法?
我的意思是,所有的例子都使用db.collection.findAndModify
,但这是什么db.collection
? 我怎样称呼它?
要从Mongoose访问findAndModify
更新function,请使用findOneAndUpdate
:
Joke.findOneAndUpdate( { content: content }, { $setOnInsert: { content: "test" } }, { new: true, upsert: true }, callback );