Javascript 如何在Node.js中的一个json中追加两个查询结果
下面是我在node.js中的代码,我想知道如何在一个json中附加两个查询结果并发送json作为响应Javascript 如何在Node.js中的一个json中追加两个查询结果,javascript,json,node.js,Javascript,Json,Node.js,下面是我在node.js中的代码,我想知道如何在一个json中附加两个查询结果并发送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", "
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 }));
});
});
首先,您应该找到一种方法来等待两个异步操作的
完成,然后concat结果。看看或者
您应该使用concat
方法
以下是一个例子:
var json1=[{'name':'doug','id':5}];
var json2=[{'name':'goud','id':1}];
json1=json1.concat(json2);
console.log(json1)
首先,您应该找到一种方法,等待两个异步操作完成,然后处理结果。看看或者
您应该使用concat
方法
以下是一个例子:
var json1=[{'name':'doug','id':5}];
var json2=[{'name':'goud','id':1}];
json1=json1.concat(json2);
console.log(json1)代码>使用async.parallel发送并行请求。async.parallel的结果将是一个结果数组(这将解决您的问题)
使用async.parallel发送并行请求。async.parallel的结果将是一个结果数组(这将解决您的问题)
返回响应时,如何为每个结果集指定标题?例如,我得到的数据如下:[{“id”:1,“country_name”:“Pakistan”}],{“id”:1,“currency”:“PKR”}]]到[country:[{“id”:1,“country_name”:“Pakistan”}],currency:[{“id”:1,“currency”:“PKR”}]]您不能指定头,但结果将是有序的。因此,您可以计算query1(第一个函数)的结果将在results[0]中
和query2将出现在结果[1]
中,依此类推,我们可以在第二个函数中使用result1中的一些数据吗?这是一个并行函数,两个函数将一起运行,因此不能使用一个函数中的数据。在另一种情况下,但您需要这样的操作,您可以使用async.falter
(但这将以串联方式运行您的函数)如何在返回响应时为每个结果集指定标题?例如,我得到的数据如下:[{“id”:1,“country_name”:“Pakistan”}],{“id”:1,“currency”:“PKR”}]]到[country:[{“id”:1,“country_name”:“Pakistan”}],currency:[{“id”:1,“currency”:“PKR”}]]您不能指定头,但结果将是有序的。因此,您可以计算query1(第一个函数)的结果将在results[0]中
和query2将出现在结果[1]
中,依此类推,我们可以在第二个函数中使用result1中的一些数据吗?这是一个并行函数,两个函数将一起运行,因此不能使用一个函数中的数据。在另一种情况下,如果您希望进行这种操作,您可以使用async.falter
(但这将以串联方式运行您的函数)感谢您的努力,但您提供的参考链接令人困惑和复杂。但是谢谢你。感谢你的努力,但是你提供的参考链接让人困惑和复杂。不过谢谢你。
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
}
})
});