-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)、ループを実行するたびに変数をインクリメントする必要があります (++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);
于 2012-10-23T19:49:42.170 に答える