2017-05-27 16 views
0

以下はnode.jsのコードです.Jsonに1つのjsonで2つの結果を追加し、応答としてjsonを送信する方法を知りたいと思います。Node.jsの1つのjsonに2つのクエリ結果を追加する方法

 router.get("/get-meta", function(req, res, next){ 

    connection.query("select id, country_name from country", function (error, results) { 

     if (error) res.json({"status": "failed", "message": error.message}); 
     else res.send(JSON.stringify({ results })); 
    }); 
    connection.query("select id, currency from currency", function (error, results2) { 

     if (error) res.json({"status": "failed", "message": error.message}); 
     else res.send(JSON.stringify({ results2 })); 
    }); 
}); 

答えて

3

使用async.parallel

var async = require('async') 

router.get("/get-meta", function(req, res, next){ 

    async.parallel([ 
     function(callback){ 
      connection.query("select id, country_name from country", function (error, result1) { 
       callback(error,result1) 
      }); 
     }, 
     function(callback){ 
      connection.query("select id, currency from currency", function (error, result2) { 
       callback(error,result2) 
      }); 
     } 

     ],function(err,results){ 
      if(err){ 
       res.json({"status": "failed", "message": error.message}) 
      }else{ 
       res.send(JSON.stringify(results)); //both result1 and result2 will be in results 
      } 
     }) 
}); 
+0

レスポンスを返しながら各結果セットに見出しを付けるにはどうすればよいですか? たとえば、次のようなデータが表示されます。 [[{"id":1、 "country_name": "パキスタン"}]、[{"id": "通貨": "PKR"}]] 〜 [{"id":1、 "country_name": "Pakistan"}]、通貨:[{"id": "currency": "PKR"}]] –

+0

ヘッダーを指定することはできませんが、クエリ1の結果(最初の関数)は 'results [0]'にあり、query2は 'results [1]'にあり、 – node

+0

にあります。 2番目の関数? –

1

まず第一に、あなたは終了し、その後、連結結果には、2つの非同期操作のためのawaitに方法を見つける必要があります。お見積もりhereまたはhere

concatメソッドを使用する必要があります。ここ

は一例であり:(あなたの問題を解決する)結果の配列であろうasync.parallelの平行requests.the結果を送信する

var json1 = [{'name': "doug", 'id':5}]; 
 
var json2 = [{'name': "goud", 'id':1}]; 
 
json1 = json1.concat(json2); 
 
console.log(json1);

+1

あなたの努力を感謝しますが、提供した参照リンクは紛らわしく複雑です。しかし、ありがとう。 –

関連する問題