[英]How to Async combine multiple JSON arrays into 1 with Node.js javascript
我正在使用NodeJS和Async執行多個選擇查詢。 因此,我想填充的collection
與陣列firstqueryarray
和secondqueryarray
。
如何將第一個和第二個響應合並到一個數組中?
exports.relations = function (req, res) {
var 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
});
}
res.json({
firstqueryarray: 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
});
}
res.json({
secondqueryarray: secondqueryarray
});
});
}
]
)
};
您可以在此處考慮常規的camelCase(即, secondQueryArray
作為變量名)。
async.parallel
將async.parallel
執行作為第一個參數傳遞的數組中的所有函數,並迅速返回,一旦所有返回,執行傳遞給它的第二個函數。
因此:
當前,您有兩個函數做得很奇怪(一個在數組內部,一個在外部,並作為第二個參數傳遞)。 您應該擁有數組中的兩個函數,而不是數組內部的一個函數和數組外部的一個函數。 數組中的兩個函數都應將其res.json()
調用替換為collection.push()
調用。 然后 ,作為async.parallel的第二個參數,您應該有一個執行res.json(collection)
的函數(它將在數組中的所有調用完成之后執行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);
}
)
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.