我使用nodejs和mongodb。
我从以下mongodb查询中获取字典res:
Profile.find(search,['_id', 'username'],function(err, res)
打印res看起来像:
[
{
"username": "dan",
"_id": "508179a3753246cd0100000e"
},
{
"username": "mike",
"_id": "508317353d1b33aa0e000010"
}
]
}
我想推送每个res [x]另一个键值对:
[
{
"username": "dan",
"_id": "508179a3753246cd0100000e",
"more info": {
"weight": "80",
"height": "175"
}
},
{
"username": "mike",
"_id": "508317353d1b33aa0e000010"
},
"more info": {
"weight": "80",
"height": "175"
}
]
}
我试过了:
var x=0
dic = []
while (x<res.length){
dic[x] = {}
dic[x]=res[x]
dic[x]["more info"] = {"wight" : weight, "height" : hight}
x=x+1
}
但它被忽略了,我得到了
[
{
"username": "dan",
"_id": "508179a3753246cd0100000e"
},
{
"username": "mike",
"_id": "508317353d1b33aa0e000010"
}
]
}
感谢您的帮助。
答案 0 :(得分:0)
改为使用for循环。
for (var x = 0, len = res.length; x < len; ++x) { ... }
您需要首先初始化变量x
(var x = 0
),然后在每次执行循环后递增它(++x
或x += 1
)。
<强>更新强>
哦,好的。为什么顺便创建新数组(dic
)的事件? JavaScript中的对象通过引用传递,因此如果您只修改单个结果(res [0],res [1]),则会得到相同的结果。
dic[x] = {}; dic[x] = res[x]
在创建新对象({}
)时没有意义,然后立即用对象res[x]
覆盖它来覆盖它。
试试这个:
res.forEach(function (item) {
item['more info'] = { weight: weight, height: height };
});
console.log(res);