-2

我使用 nodejs 和 mongodb。

我从以下 mongodb 查询中获取字典 res:

Profile.find(search,['_id', 'username'],function(err, 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"
    }
]
}

感谢你的帮助。

4

1 回答 1

0

请改用 for 循环。

for (var x = 0, len = res.length; x < len; ++x) { ... }

您需要先初始化变量x( var x = 0),然后在每次执行循环后递增它 (++xx += 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);
于 2012-10-23T19:49:42.170 回答