2012-02-29 68 views
0

我使用node.js進行服務器端開發,並使用backbone.js進行客戶端開發。我想通過向node.js發送一個請求來從多個表中獲取數據(多於3個)。但我不能合併所有這些結果與其他節點因異步執行node.js.我這樣做了,但它發送了大量的獲取請求到節點js從所有表中獲取數據,並且由於我的網站的這些性能變得越來越慢。如果有人有任何想法,請幫助我。通過只發送一個請求從多個表中獲取數據

+0

我同意。 Node.js的問題似乎比我回答的ASP.NET MVC問題更多。 – 2012-02-29 08:01:46

回答

1

我會創建一個方法來聚合來自每個請求的結果並將響應發送回去。基本上你的三個異步數據庫調用都會將他們的數據傳遞給同一個方法。該方法將檢查它是否具有完成請求所需的所有數據,如果有,則發送響應。

下面是一個僞代碼示例:

function handleRequest(req, res) { 
     var results = {}; 

     db.getUsers(function(data) { 
       aggregate('users', data); 
     }); 

     db.getPosts(function(data) { 
       aggregate('posts', data); 
     }); 

     db.getComments(function(data) { 
       aggregate('comments', data); 
     }); 

     function aggregate(name, data) { 
       results[name] = data; 
       if(results.users && results.posts && results.comments) { 
         res.send(results); 
       } 
     } 
} 

這大大簡化,也當然應該檢查錯誤和超時的數據庫調用,但是這將讓你等待所有的異步命令在發送數據之前完成。