我使用NodeJS和Async来执行多个选择查询。因此,我想使用"ssl-required":"none"
和collection
填充firstqueryarray
数组。
如何将第一个和第二个响应合并为一个数组?
secondqueryarray
答案 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);
}
)
};