为任何更新查询增加 Mongoose 文档版本的简单方法
Easy way to increment Mongoose document versions for any update queries?
我想开始利用猫鼬文档版本控制(__v键)。我实际上遇到了增加版本值的问题,然后我发现您必须在执行查询时添加this.increment()
。
有没有办法自动递增?现在,我只是将其添加到预中间件中以进行更新类型的查询:
module.exports = Mongoose => {
const Schema = Mongoose.Schema
const modelSchema = new Schema( {
name: Schema.Types.String,
description: Schema.Types.String
} )
// Any middleware that needs to be fired off for any/all update-type queries
_.forEach( [ 'save', 'update', 'findOneAndUpdate' ], query => {
// Increment the Mongoose (__v)ersion for any updates
modelSchema.pre( query, function( next ) {
this.increment()
next()
} )
} )
}
这似乎有效..但我有点认为猫鼬已经有办法做到这一点了。我错了吗?
我会说这是要走的路。预中间件完全符合这种需求,我不知道任何其他方法。事实上,这就是我在所有架构中所做的。
但是,您需要注意的是文档和查询中间件之间的区别。文档中间件是为init
、validate
、save
和remove
操作而执行的。在那里,this
指的是文档:
schema.pre('save', function(next) {
this.increment();
return next();
});
查询中间件用于count
、find
、findOne
、findOneAndRemove
、findOneAndUpdate
和update
操作。在那里,this
是指查询对象。更新此类操作的版本字段如下所示:
schema.pre('update', function( next ) {
this.update({}, { $inc: { __v: 1 } }, next );
});
资料来源:猫鼬文献。
对我来说,最简单的方法是:
clientsController.putClient = async (req, res) => {
const id = req.params.id;
const data = req.body;
data.__v++;
await Clients.findOneAndUpdate({ _id: id }, data)
.then( () =>
{
res.json(Ok);
}
).catch ( err => {
Error.code = '';
Error.error = err;
res.json(Error);
})
};
相关文章:
- 简单的javascript在Shopify中不起作用
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- JS编译器/包管理器,用于版本控制
- jQuery-2.1.1.min.js或最新版本jQuery-2.13.min.js不会't支持'@
- 如何制作简单的php'在Javascript中的foreach等价物
- Chrome加载旧版本的Javascript文件
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 为什么jQuery 1.8不能在IE8和InternetExplorer9中使用?(截至2012年9月的IE9最新版本)
- JQuery:向多个匹配结果添加换行符的最简单方法
- 如何设置jsfiddle's的javascript版本
- AJAX简单错误.XMLHttpRequest无法加载http://localhost/mpl/getPage.php.
- Moment/Jquery-一个简单时间线的愚蠢问题
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 简单类测试未通过
- 为任何更新查询增加 Mongoose 文档版本的简单方法
- 简单的点击图像以更大的版本打开图像,如灯箱 2
- 获取简单的注释器和引导程序以使用相同版本的jQuery
- jQuery版本的简单javascript不起作用
- 最简单的ajax (jQuery)版本,只上传一个文件
- DOMNodeRemovedFromDocument的简单MutationObserver版本