【问题标题】:Mongoose update embedded document does not work猫鼬更新嵌入文档不起作用
【发布时间】:2013-02-02 01:23:14
【问题描述】:

大家好,

我定义了一个深度嵌入的猫鼬模型“Person”,其中包含一个字段“Contact”,并且“Contact”有一个包含此人工作、家庭、送货等地址的“Address”数组。

当我想更新地址并使用模型的“保存”功能时,更改并未反映在数据库中。

            console.log(person.Contact.Address[i].City = 'Chicago');
            person.save(function (err) {
                if (!err) {
                   console.log(person.Contact.Address[i].City);

console.log 表明字段 City 已更新为新值,但 mongodb 的值保持不变。

你能帮我解决这个问题吗?

谢谢! 加里

【问题讨论】:

    标签: node.js mongoose


    【解决方案1】:

    问题已通过使用markModified 解决:

    person.markModified('Contact.Address');
    person.save()
    

    我仍然不确定何时需要使用markModified,因为在大多数其他情况下,更改在没有使用的情况下反映在 mongodb 中。

    【讨论】:

    • 我认为这与混合数据类型有关
    • 架构中任何带有typeMixed, {}, Array, [] 的字段在其内容更改时都需要使用markModified。否则你不应该需要它。
    • 仅供参考,markModified 对于相同的请求只会工作一次。如果您尝试将其重新用于相同的请求,则可能会引发重复输入错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 2015-08-14
    • 2016-07-14
    • 2018-02-28
    • 2012-04-16
    • 2012-02-15
    相关资源
    最近更新 更多