我对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);
});
});
});
如果我在分配所有对象之前打印item,item2和item3打印不同以及一些相同的属性。当我在var记录行之后打印记录时,它只显示item3 json属性。
根据它应该documentation
将所有可枚举的自有属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
哪个没有发生。我做错了什么或这是预期的行为?
我需要async库。导入是否有可能改变object.assign的行为?
答案 0 :(得分:0)
当我在var记录行之后打印记录时,它只显示item3 json属性。
根据spec
iii)如果desc未定义且desc。[[Enumerable]]为真,那么
a)让propValue为Get(from,nextKey)。
b)ReturnIfAbrupt(propValue)。
c)设置状态为Set(to,nextKey,propValue,true)。 //观察此行
d)ReturnIfAbrupt(状态)。
因此,这是一个预期的行为,因为分配工作
<强>演示强>
var a = {a:1, b:2};
var b = {b:3, c:4};
var c = Object.assign( {}, a,b );
console.log(c);
&#13;
观察输出会覆盖b
属性
{&#34; a&#34;:1,&#34; b&#34;:3,&#34; c&#34;:4}