2012-04-06 51 views
1

我使用Expressjs瓦特/ Node.js的,我有這樣的路線: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中,我通常做一個exit()後,我回聲json響應。 Expressjs有沒有辦法做到這一點?

謝謝!

編輯:我可以將所有內容都包含在if/else中,或者在每個內部設置一個標誌,但只是看看是否有更多的elegent方式。

回答

2

你不能用「res.json」做出「多重回復」(無論如何) - 每次使用它時,它都會將數據發送給客戶端並完成響應。您需要將結果保存(並更新)爲一個變量並在最後發送。

現在我能想到的2個可能對您:

  • 嵌套回調其實挺討厭的,但有時需要(例如如果第二次呼叫的方式取決於第一個呼叫);

  • 異步回調隊列在回調中檢查是否每個其他回調完成作業。如果是的話。這可能是一個棘手的實施它自己,所以嘗試例如一個優秀的async圖書館。

+0

@freekish我繼續前進,並做了嵌套回調 - 但異步庫是甜的!我必須將其切換 - 非常感謝! – dzm 2012-04-06 16:41:11