配列の各項目にいくつかの追加値を追加しようとしています。だから私はオブジェクトを持つ配列を持って、彼らは持っている:x、y、zフィールド。次に、http.get呼び出しの応答に基づいて配列の各オブジェクトに項目を追加したいとします。ForEachはメインアレイを更新しません
主な配列は次のとおりです。投稿
以下を参照してくださいコード:post.profilePic = parsedBody.user.profilePic時
router.get('/api/posts', function(req, res){
postModel.find({})
.limit(10)
.exec(function(err, posts) {
var options = {
host: 'localhost',
port: 3000,
path: '/user?id=12345678',
method: 'GET'
};
if(posts){
posts.forEach(function(post) {
var req = http.get(options, function(res) {
var bodyChunks = [];
res.on('data', function(chunk) {
bodyChunks.push(chunk);
}).on('end', function() {
var body = Buffer.concat(bodyChunks);
var parsedBody = JSON.parse(body);
post.fullname = parsedBody.user.fullname;
post.profilePic = parsedBody.user.profilePic;
});
});
});
res.json({
posts : posts
});
} else {
res.send('Post does not exist');
}
});
});
- profilePic変数がありますノードからres.json経由で応答があった場合、追加の値は返されません。
私はここで何が欠けていますか?私はこのアプローチを問題なしに常にAngularフロントエンドで使用しています。
ありがとうございました
いくつかの変数 'var temp = post'に' post'を割り当ててください。その変数 'temp.fullname = parsedBody.user.fullname;'と 'post.profilePic = parsedBody.user.profilePic'に' fullname'と 'profilePic'を追加します。 'posts'の代わりに' temp'を返してください。 –
コメントありがとうございます。このアプローチはうまくいくでしょうが、確かにネイティブな方法が正しいでしょうか?データの大部分がすでにそこにある配列にプッシュする必要があります。この場合、メモリに大きなオーバーヘッドが生じます(実際のデータは膨大です)。 –