배열의 각 항목에 몇 가지 추가 값을 추가하려고합니다. 그래서 객체가있는 배열이 있고 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'를 할당하십시오. 그런 다음'fullname'과'profilePic'을 그 변수'temp.fullname = parsedBody.user.fullname;'과'post.profilePic = parsedBody.user.profilePic'에 추가하십시오. 이제'posts' 대신에'temp'를 반환하십시오. –
의견을 주셔서 감사합니다. 이 접근법은 효과가 있지만 확실한 방법으로 올바른 방법이 있습니까? 나는 대부분의 데이터가 이미 존재하는 배열로 밀어 넣어야하는데, 메모리에 엄청난 오버 헤드가 생길 것이다 (실제 데이터는 광대하다). –