gpt4 book ai didi

javascript - 为任何更新查询增加 Mongoose 文档版本的简单方法?

转载 作者:IT老高 更新时间:2023-10-28 13:22:04 26 4
gpt4 key购买 nike

我想开始利用 Mongooses 文档版本控制(__v 键)。我在实际增加版本值时遇到了问题,然后我发现您必须在执行查询时添加 this.increment()

有没有办法自动递增?现在,我只是将它添加到 pre 中间件中,用于更新类型的查询:

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()
} )
} )
}

这似乎可行..但我有点认为 Mongoose 中已经有一种方法可以做到这一点..我错了吗?

最佳答案

我会说这是要走的路。 pre 中间件正好适合这种需求,我不知道还有什么其他方法。事实上,这就是我在所有模式中所做的。

您需要注意的是 documentquery 中间件之间的区别。Document 中间件用于执行 initvalidatesaveremove 操作。其中,this 指的是文档:

schema.pre('save', function(next) {
this.increment();
return next();
});

Query 中间件为 countfindfindOnefindOneAndRemove 执行, findOneAndUpdateupdate 操作。在那里,this 指的是查询对象。更新此类操作的版本字段如下所示:

schema.pre('update', function( next ) {
this.update({}, { $inc: { __v: 1 } }, next );
});

来源:mongoose documentation .

关于javascript - 为任何更新查询增加 Mongoose 文档版本的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35288488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com