Javascript MongoDB/Mongoose:标记已修改嵌套对象
不幸的是,我没有可以测试这个的记录,但我在任何地方都找不到关于这个的任何信息 假设我有这样一份文件:Javascript MongoDB/Mongoose:标记已修改嵌套对象,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,不幸的是,我没有可以测试这个的记录,但我在任何地方都找不到关于这个的任何信息 假设我有这样一份文件: { email: { type: 'Gmail', data: {//freeform data}, } } 我想更新doc.email.data。我需要使用markModified(),否则数据将无法正确保存 我是这样修改的吗 doc.email.data = newData; doc.markModified('email.data'); doc.
{
email: {
type: 'Gmail',
data: {//freeform data},
}
}
我想更新doc.email.data
。我需要使用markModified()
,否则数据将无法正确保存
我是这样修改的吗
doc.email.data = newData;
doc.markModified('email.data');
doc.save();
或者我只需执行
markModified('email')
,Mongoose将解决其余问题?您需要提供修改对象字段的完整路径,因此它应该是:
doc.markModified('email.data');
谢谢你,约翰尼。执行
doc.markModified('email')
是否仍会导致数据
属性更新?我想它只是更贵了,我不想这样,但我想了解这种东西是如何工作的。@Jascination我希望它也能工作,但它会更新整个email
对象,而不仅仅是您需要的数据部分。值得注意的是,当嵌套对象是Mongoose子文档时,调用markModified
是不必要的,因为它将具有完全的更改检测(使用日期等时除外)。