我们说我有以下架构:
PersonSchema = {
name: String,
timesUpdated: {
type: Number,
default: 0
}
}
每次更新给定人员时,我都希望timesUpdated
字段增加1。现在,我可以使用Mongoose的update
中间件钩子,它可以通过类似
PersonModel.update({_id: <id>}, {name: 'new name'})
我的timesUpdated
字段会适当增加。但是,如果我只为update
中间件编写了一个钩子,则以下代码将不更新我的timesUpdated
字段:
PersonModel.updateOne({_id: <id>}, {name: 'new name'})
为了更新我的计数,我必须为udpateOne
查询编写中间件。此模式会针对其他几个类似的中间件挂钩重复,例如updateMany
,replaceOne
,save
(如果您想以这种方式更新文档),findOneAndUpdate
和我&#39 ;肯定还有很多其他人。
为简单起见,我使用更新计数的示例,但我也可以使用一个示例,其中一些其他不相关的操作在更改我的名字时发生。我是否遗漏了应该如何使用钩子的东西,或者这是猫鼬钩子的限制?