本文介绍了_.merge克隆子文档,而不是更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的角fullstack 的项目,我尝试更新的项目添加一个新的子文档到它。当合并前检查我的 req.body 这一切看起来理所应当。然而,合并后更新的文件又增加了一个新的子文档,因为它应该,唯一的问题是,这个新的文件是不是一个它应该是一个已经存在的克隆。

_。合并 lodash

在code:

 的console.log('');
    的console.log(合并之前的注意事项:',entry.notes);    的console.log('');
    的console.log('合并前body.notes:',req.body.notes);    VAR更新= _.merge(入门,req.body);    的console.log('');
    的console.log(合并后的注意事项:',updated.notes);


和我的控制台结果运行code时:

合并前

 注:
[
    {
        内容:'< P>测试与LT; / P>,
        日期:星期四2015年4月16日10时14分44秒GMT + 0200(罗,sommertid)
        作者:55193679026666b00554d00e,
        _id:552f6f7435828478156f6103,
        注意事项:[]
    }
]合并前body.notes:
[
    {
        内容:'< P>测试与LT; / P>,
        日期:星期四2015年4月16日10时14分44秒GMT + 0200(罗,sommertid)
        作者:55193679026666b00554d00e,
        _id:552f6f7435828478156f6103,
        注意事项:[]
    },
    {
        内容:'< P>喇嘛喇嘛< / P>,
        日期:2015-04-16T08:25:24.431Z',
        作者:55193679026666b00554d00e
    }
]合并后指出:
[
    {
        内容:'< P>测试与LT; / P>,
        日期:星期四2015年4月16日10时14分44秒GMT + 0200(罗,sommertid)
        作者:55193679026666b00554d00e,
        _id:552f6f7435828478156f6103,
        注意事项:[]
    },
    {
        内容:'< P>测试与LT; / P>,
        日期:星期四2015年4月16日10时14分44秒GMT + 0200(罗,sommertid)
        作者:55193679026666b00554d00e,
        _id:552f6f7435828478156f6103,
        注意事项:[]
    }
]


解决方案

尝试使用 _延长 或来代替:

  VAR更新= _.assign(入门,req.body);

按ShitalShah凸显合并之间的差异和扩展,是造成重复你的与合并但本质上生成的目标:

JSBin to illustrate the differences:

var dest = {
  p: { x: 10, y: 20},
};

var src = {
  p: { x: 20, z: 30},
};

console.log(_.merge(dest, src));
/*
[object Object] {
  p: [object Object] {
    x: 20,
    y: 20,
    z: 30
  }
}
*/

console.log(_.extend(dest, src));
/*
[object Object] {
  p: [object Object] {
    x: 20,
    z: 30
  }
}
*/

这篇关于_.merge克隆子文档,而不是更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-13 04:17