【发布时间】:2018-04-27 12:28:11
【问题描述】:
我对 mongodb 有一些封装的 mongoose 查询。
collection1.findOne({ parm: value}, function(err, item){
var a = item.a;
var b = item.b;
collection2.findOne({parm1: a}, function(err, item2){
collection3.findOne({parm2: b}, function(err, item3){
var records = Object.assign(item, item2, item3);
});
});
});
如果我在分配之前打印项目,项目 2 和项目 3,所有对象都会打印不同的以及一些相同的属性。当我在 var 记录行之后打印记录时,它只显示 item3 json 属性。
根据documentation 应该
将一个或多个源对象中所有可枚举的自身属性的值复制到目标对象。它将返回目标对象。
这没有发生。我做错了什么还是这是预期的行为?
我需要async 库。导入是否可能会改变 object.assign 的行为?
【问题讨论】:
-
对象的键是否相等?
-
有些是,有些不是
-
它应该与最后一个值重叠,而不是只保留最后一个json对象属性
-
好吧,那些相等的将是最后分配的那些,没有办法在一个对象中有两次相同的键。
-
请记住 Object.assign 执行浅拷贝,因此如果对象被包装在单个键中。该单个键将被覆盖。例如:在
Object.assign({}, {wrapper: {a:5, b:2}}, {wrapper: {b:3, c:2}})中,预期的输出是{wrapper:{b:3, c:2}},因为您正在用不同的对象替换整个包装键
标签: javascript json node.js mongodb mongoose