2012-04-06 3 views
1

내가 Node.js를 승/Expressjs을 사용하고 있습니다()에서 종료하고이 같은 경로가 있습니다Expressjs/Node.js를 해당 PHP는

users.init(app.db, function() { 

     users.checkUsername(user.username, function(err, count) { 
      if (count > 0) { 
       res.json({'username': 'unavailable'}); 
      } 
     }); 

     users.checkEmail(user.email, function(err, count) { 
      if (count > 0) { 
       res.json({'email': 'unavailable'}); 
      } 
     }); 

     users.insertUser(user, function(err, response) { 
      res.json({'success' : 'true'}); 
     }); 

    }) 

이 복수 응답, 사용자 이름과 이메일을 보내 인쇄됩니다 예를 들어 어떤 경우에는

이 경로는 json 응답을 출력 한 후 PHP에서 ajax를 통해 호출됩니다. 보통은 exit()입니다. 익스프레스에서 그렇게 할 수있는 방법이 있습니까?

감사합니다.

EDIT : if/else의 모든 내용을 모두 감쌀 수도 있고, 각 안에 플래그를 설정할 수도 있습니다. 다만 더 우아한 방법이 있는지 보겠습니다.

답변

2

res.json으로 "여러 응답"을 할 수 없습니다. 사용할 때마다 클라이언트에 데이터를 보내고 응답을 완료합니다. 결과를 변수에 보관 (및 업데이트)하고 맨 마지막에 보내야합니다.

지금 나는 당신을 위해이 가능성을 생각할 수 있습니다 :

  • 중첩 콜백 실제로 아주 짜증나는하지만 때로는 필요 (예를 들어 두 번째 호출이 첫 번째 호출에 의존하는 경우);

  • 비동기 콜백 대기열 콜백 중 다른 모든 콜백이 작업을 완료했는지 확인합니다. 그렇다면 응답을하십시오. 직접 구현하기에는 약간 까다로울 수 있으므로 예를 들어 async 라이브러리를 사용해보십시오.

+0

@freekish 나는 앞뒤로 중첩 콜백을했지만 그 비동기 라이브러리는 달콤합니다! 나는 그것을 뒤집어 써야 할 것이다 - 많이 고마워! – dzm