如何使用Node.js javascript将多个JSON数组合并为1

时间:2016-07-12 20:00:50

标签: javascript arrays json node.js multidimensional-array

我使用NodeJS和Async来执行多个选择查询。因此,我想使用"ssl-required":"none"collection填充firstqueryarray数组。

如何将第一个和第二个响应合并为一个数组?

secondqueryarray

1 个答案:

答案 0 :(得分:-1)

你可以在这里考虑传统的camelCase(即secondQueryArray作为变量名)。

async.parallel将一个接一个地快速执行作为第一个参数传递的数组中的所有函数,并且一旦返回,就执行传递给它的第二个函数。

因此:

您目前奇怪地完成了两个函数(一个在数组内部,一个在外部并作为第二个参数传递)。您应该拥有数组中的两个函数,而不是数组中的一个,而不是数组外的一个。数组中的两个函数都应将res.json()调用替换为collection.push()调用。 然后,作为async.parallel的第二个参数,你应该有一个函数(它将在数组中的所有调用完成后执行)执行res.json(collection)

exports.relations = function (req, res) {

    var collection = { collection:[] };

    async.parallel([
        function () {
            var firstQueryArray= [];
            connection.query(query1, function (err, rows, fields) {
                if (err) throw err;
                for (var i in rows) {
                    firstQueryArray.push({
                        name: rows[i].name,
                        email: rows[i].email
                    });
                }
                collection.collection.push(firstQueryArray);
            });

        },
        function () {
            var secondQueryArray= [];
            connection.query(query2, function (err, rows, fields) {
                if (err) throw err;

                for (var i in rows) {
                    secondQueryArray.push({
                        name: rows[i].name,
                        email: rows[i].email
                    });
                }
                collection.collection.push(secondQueryArray);
            });
        }],
        function() {
            res.json(collection);
        }
    )
};