如何在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 );
- Express Async – 发送后无法设置标题,双重callback?
- mongoose多租户 – 处理文档引用+填充
- MongoDB中的JavaScript NoSQL注入预防
- 如何使用Mongoose Aggregation FrameWork对数组元素进行分组
- node.js / mongoDB:如果field为null,则返回自定义值
- 在mongodb中创build一个可以创build数据库并仅pipe理数据库的用户/angular色
- 我如何插入一个datetypes到iOS Swift的MongoDB(通过JSON和Node.js)
- 限制在Sails.js模型中设置的字段
- 延迟响应,直到所有查询完成