2012-02-29 11 views
0

私は、サーバー側の開発にはnode.jsを使用し、クライアント側の開発にはbackbone.jsを使用しています。私はnode.jsに1つの要求を送ることによって複数のテーブル(3以上)からデータを取得したいしかし、私はその結果をすべてnode.jsの非同期実行のお互いにマージすることはできません。私はこれを行ったが、それはすべてのテーブルからデータを取得するためのノードjsに多くのリクエストを送信し、私のサイトのこれらのパフォーマンスが遅くなっているためです。何か考えている人なら、私を助けてください。1つのリクエストだけを送信して複数のテーブルからデータを取得する

+0

私は同意します。 Node.jsの質問には、私が回答していたASP.NET MVCの質問以上の問題があるようです。 –

答えて

1

私は、それぞれの要求の結果を集約して応答を返すメソッドを作成します。基本的に、3つの非同期dbコールはそれぞれ、同じメソッドにデータを渡します。この方法では、要求を完了するために必要なすべてのデータが含まれているかどうかを確認し、要求があった場合は応答を送信します。ここで

は、擬似コードの例です。これは大幅に簡素化され

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); 
       } 
     } 
} 

、あなたももちろんデシベルの呼び出しにエラーやタイムアウトのためにチェックする必要がありますが、これはあなたがすべての非同期コマンドを待つことができますデータを送信する前に完了してください。

関連する問題