2012-04-06 8 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'}); 
     }); 

    }) 

これは、複数の応答、ユーザ名と電子メールを送信し印刷します例えば、場合によっては、

このルートはajaxを経由して呼び出されます。phpでは、jsonレスポンスをエコーアウトした後に通常exit()を実行します。 Expressjでこれを行う方法はありますか?

ありがとうございました!

EDIT:if/elseのすべてをラップしたり、それぞれの内側にフラグを設定したりできますが、よりエレガントな方法があるかどうかを確認できます。

答えて

2

res.jsonで「複数の応答」を行うことはできません。使用するたびにクライアントにデータを送信し、応答を確定します。結果を変数に保持(更新)し、最後に送信する必要があります。

は今、私はあなたのための2つの可能性を考えることができます。

  • ネストされたコールバック実際には非常に迷惑が、時には必要に応じて(例えば2回目の呼び出しは最初の呼び出しに依存している場合)。

  • 非同期コールバックキューコールバックでは、他のすべてのコールバックがジョブを終了したかどうかをチェックします。もしそうなら、応答をします。これは自分で実装するのがやや難しいかもしれませんので、例えば、asyncという優れたライブラリを試してみてください。

+0

@freekish私は先に進み、ネストされたコールバックを実行しましたが、非同期ライブラリは甘いです!私はそれを切り替える必要があります - ありがとう! – dzm

関連する問題