如何在 Node.js 的一个 json 中附加两个查询结果

Posted

技术标签:

【中文标题】如何在 Node.js 的一个 json 中附加两个查询结果【英文标题】:How to append two results of query in one json in Node.js 【发布时间】:2017-10-28 04:07:01 【问题描述】:

以下是我在 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", "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 ));
    );
);

【问题讨论】:

【参考方案1】:

使用 async.parallel 发送并行请求。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
            
        )
);

【讨论】:

如何在返回响应时为每个结果集指定标题?例如,我正在获取如下数据: [["id":1,"country_name":"Pakistan"],["id":1,"currency":"PKR"]] 到 [country: [ "id":1,"country_name":"Pakistan"],货币:["id":1,"currency":"PKR"]] 您不能指定标题,但结果将按顺序排列。因此您可以假设 query1(第一个函数)的结果将在 results[0] 和 query2 将在 results[1] 等等 我们可以在第二个函数中使用来自 result1 的一些数据吗? 这是并行函数,两个函数将一起运行,因此您不能使用来自一个函数的数据。在另一个,但你想要这样的操作,你可以使用async.waterfall(但这会连续运行你的函数)【参考方案2】:

首先,你应该找到一个方法以await 进行两次async 操作来完成,然后concat 结果。看看here或here

你应该使用concat方法。

这是一个例子:

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

【讨论】:

感谢您的努力,但您提供的参考链接令人困惑和复杂。不过还是谢谢。

以上是关于如何在 Node.js 的一个 json 中附加两个查询结果的主要内容,如果未能解决你的问题,请参考以下文章

如何在 formData 对象中附加文件而不在 Node.js 中物理保存文件?

如何在 Node.js 中解析包含“NaN”的 JSON 字符串

如何添加到 node.js 中的现有 json 文件

如何在 Node.js 中使用 JSON 对象更新 mySQL 表?

如何在 Node.js 上将多个 JSON 文件拉入 SWIG?

讲座node.js npm插件开发与发布