2017-05-27 30 views
0

以下是我在node.js中的代碼,我想知道如何在一個json中追加兩個查詢結果併發送json作爲響應。如何在Node.js中追加兩個查詢結果中的一個json

所有的
 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發送async.parallel的平行requests.the結果將是結果的陣列(其將幫助解決問題)

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」:「Pakistan」}],[{「id」:1,「currency」:「PKR」}]] 至 [國家:[{「id」:1,「country_name」:「巴基斯坦」}],貨幣:[{「id」:1,「currency」:「PKR」}]] –

+0

您無法指定標題,將按順序排列。因此,您可以將query1(第一個函數)的結果記錄在'results [0]'中,並且query2將位於'results [1]'等等 – node

+0

中,我們可以使用result1中的一些數據第二個功能? –

1

首先,你應該找到await的方法有兩個異步操作完成,然後CONCAT結果。看看herehere

您應該使用concat方法。

下面是一個例子:

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

+1

欣賞你的努力,但你提供的參考鏈接令人困惑和複雜。但是,謝謝。 –

相關問題