【发布时间】:2020-05-13 18:50:37
【问题描述】:
我正在通过 pre hook 为 mongodb 文档保存一个较小的唯一 ID。
schema.pre('save', function(next) {
this.refId = uid();
next();
});
据我了解,save 挂钩仅在创建文档时运行。
但是当我通过查询获取文档并尝试通过添加一些新数据来保存它时,唯一 id (refId) 字段也会更新。
const foo = Foo.findOne({refId: 'fwe23fw23'});
Foo.field = 'new value';
Foo.save(); // runs pre hook again;
这让我相信 save 钩子在每个 save() 查询上运行,无论它是否是 create 或 update 方法。
如何确保refId 只创建一次,并且在任何更新操作中都不会更改?
注意:我知道我可以在模型本身上使用updateOne() 来更新文档。但我想了解为什么保存文档本身不起作用。
【问题讨论】:
标签: mongodb mongoose mongoose-schema