【发布时间】:2021-04-12 18:02:31
【问题描述】:
mongodb中有如下文档。
[{
_id: "x8",
company: {
name: "ms",
number: 123,
},
position: "12.12"
}]
我使用 mongoose 的 pre hook 和 nestjs 更新了这个。
schema.pre('findOneAndUpdate', function () {
this.set({
company: {name: "X3jfks"} // encrypt Field in pre hook.
});
});
还有一个 findOneAndUpdate 方法。
const updateData = {
company: "xyz"
}
await this.model.findOneAndUpdate(
{_id: "x8"},
...updateData
)
但文件的更改与我的意图不同,如下所示。
也就是说,company.number 消失了。
[{
company: {
name: "X3jfks",
},
position: "12.12"
}]
我需要这个结果。
[{
company: {
name: "X3jfks",
number: 123,
},
position: "12.12"
}]
但结果与 $set 相同。
await this.model.findOneAndUpdate(
{_id: "x8"},
{$set: {...updateData}}
)
我必须在 pre hook 中使用 this.set()。这个问题有解决方案吗?感谢您阅读本文。
【问题讨论】: