【问题标题】:MongoDB / Mongoose: MarkModified a nested objectMongoDB / Mongoose:MarkModified 嵌套对象
【发布时间】:2016-04-19 06:29:35
【问题描述】:

很遗憾,我没有可以对此进行测试的记录,但我在任何地方都找不到任何相关信息。

假设我有这样的文件:

{
  email:  {
       type: 'Gmail',
       data: {//freeform data},
    }
}

我想更新doc.email.data。我需要使用markModified(),否则数据将无法正确保存。

我会这样标记修改吗?

doc.email.data = newData;
doc.markModified('email.data');
doc.save();

还是我只做markModified('email'),然后 Mongoose 会解决剩下的问题?

【问题讨论】:

    标签: javascript node.js mongodb mongoose


    【解决方案1】:

    您需要提供修改后的对象字段的完整路径,所以应该是:

    doc.markModified('email.data');
    

    【讨论】:

    • 谢谢约翰尼。做doc.markModified('email') 仍然会导致data 属性被更新吗?我认为它只是更贵,这是我不想要的,但我试图了解这种事情是如何运作的。
    • @Jascination 我希望它也可以工作,但它会更新整个 email 对象,而不是您需要的 data 部分。
    • 值得注意的是,当嵌套对象是 Mongoose 子文档时,不需要调用 markModified,因为它将具有完整的更改检测(使用日期等时除外)。
    猜你喜欢
    • 2016-06-25
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多