app.get('/down', function(req, res){
  var filename = 'data.csv';
  res.attachment(filename);
  var data = "";
  Presentations.find({'conference':req.query.conf}).sort('body', 1).execFind(function(err, presentations){
    presentations.forEach(function(p){
      data += p.title + '\n';
      Comments.find({'to':p.name}).sort('date', -1).execFind(function(err, comments){
        comments.forEach(function(c){
          data += c.emotion + ',' + c.user.name + ',' + c.body + '\n';
        });
      });
    });
    res.send(data);
  });
});

위와 같은 코드입니다.(누가 물어본건데 제가 궁금해져서)

node.js코드이고 디비에 쿼리를 날린 결과로 루프를 돌면서 재 쿼리를 만들때 비동기이기 때문에 형재의 res.send(data)에는 comments에 대한 결과가 제대로 들어가지 않습니다. 좋은 해결책이 있을까요?

asked Jul 08 '11 at 11:05

Outsider's gravatar image

Outsider
1186


음;; forEach 자체는 비동기가 아니긴한데... node.js 에서 어떤식으로 돌아가는지를 몰라서..... ㅠㅠ

answered Jul 08 '11 at 17:43

springBriz's gravatar image

springBriz
1

comments 에 대한 결과가 어떻게 잘못되는지 알면 좀더 명확한 답변을 할 수 있을것 같은데요. ^-^/ 컨퍼런스의 한 세션에 대한 댓글을 모두 표시하기 위한 코드인것 같은데요.

추측하기로는 문자열 더하기를 해서 그런것 같은데요.

var data = []; 배열로 정의하시고. forEach 를 이용한 이터레이터에서 해당 배열에 순차적으로 추가하는 형식으로 해보면 어떨까 하는데요.

answered Jul 09 '11 at 00:35

Rhiokim's gravatar image

Rhiokim
336

(리오 글 보니 생각나서...) 루프 제일 안쪽의 문자열 합치는 부분은 6개의 스트링을 붙이는거니 join으로 처리하는게 좋을것같네요.

answered Jul 09 '11 at 19:17

springBriz's gravatar image

springBriz
1

Try this...

app.get('/down', function(req, res){
  var filename = 'data.csv';
  res.attachment(filename);
  var data = "";
  Presentations.find({'conference':req.query.conf}).sort('body', 1).execFind(function(err, presentations){
    presentations.forEach(function(p){
      data += p.title + '\n';
      Comments.find({'to':p.name}).sort('date', -1).execFind(function(err, comments){
        comments.forEach(function(c){
          data += c.emotion + ',' + c.user.name + ',' + c.body + '\n';
        });
      });
    });
  });
  res.send(data);
});

answered Aug 17 '11 at 22:55

pes's gravatar image

pes
1

내 답변
toggle preview

구독:

로그인 후에는 모든 변경사항에 대해 구독할 수 있습니다.

Tags:

×2
×1

질문등록: Jul 08 '11 at 11:05

열람: 357 times

최종 수정: Aug 17 '11 at 22:55

powered by OSQA