MongoDB的findOneAndUpdate删除数据,而不考虑在预挂钩上设置的$
mongodb中的文档如下所示MongoDB的findOneAndUpdate删除数据,而不考虑在预挂钩上设置的$,mongodb,mongoose,nestjs,Mongodb,Mongoose,Nestjs,mongodb中的文档如下所示 [{ _id: "x8", company: { name: "ms", number: 123, }, position: "12.12" }] 我用nestjs的mongoose前钩子更新了这个 schema.pre('findOneAndUpdate', function () { this.set({
[{
_id: "x8",
company: {
name: "ms",
number: 123,
},
position: "12.12"
}]
我用nestjs的mongoose前钩子更新了这个
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中使用这个.set()。这个问题有什么解决办法吗?感谢您阅读此文章。请更改您的钩子,当前它更新整个公司对象,因为您已为公司字段指定了新值。您只需要更新company对象的键,而不是为complete字段指定新值
schema.pre('findOneAndUpdate', function () {
this.set({
"company.name":"X3jfks" // encrypt Field in pre hook.
});
});
Pushpendra Singh我怎样才能在预钩内完成整个区域?