Javascript 节点JS mysql循环查询res.render结果
我在通过res.render返回循环mysql查询结果时遇到问题。我正在运行两个查询;第一个查询从信息模式中提取表名,第二个查询运行从第一个查询返回的每个表名Javascript 节点JS mysql循环查询res.render结果,javascript,node.js,mysql2,Javascript,Node.js,Mysql2,我在通过res.render返回循环mysql查询结果时遇到问题。我正在运行两个查询;第一个查询从信息模式中提取表名,第二个查询运行从第一个查询返回的每个表名 router.get('/data',ifNotLoggedin, async (req, res) => { let table = [] let rslt = [] pool.query('SELECT GROUP_CONCAT(table_name SEPARATOR ",") \
router.get('/data',ifNotLoggedin, async (req, res) => {
let table = []
let rslt = []
pool.query('SELECT GROUP_CONCAT(table_name SEPARATOR ",") \n' +
'AS myval FROM information_schema.tables WHERE table_schema = "numbers" ', function (err, rows) {
//console.log (rows);
if (typeof rows[0].myval == 'undefined' || rows[0].myval === null) {
rows = []
res.render('pbx/data', { data: '' });
} else {
rows = rows
let ans = rows[0].myval.split(',')
ans.forEach(ans => table.push(ans))
//console.log (table);
}
table.forEach((data) => {
pool.query('SELECT ? as name, COUNT(phone) AS "totalNumbers", \n' +
'count(case when isselected = 1 then 1 END) AS "usedNumbers" ,\n' +
'count(case when isselected = 0 OR isselected IS NULL then 0 END) AS "remNumbers" from numbers.??', [data, data]
, function (err, rows1) {
rows1.forEach(function (item) {
rslt.push(item);
});
setTimeout(() => {
res.render('pbx/data', { data: rslt });
}, 500);
})
})
});
})
这可以按原样工作,但我知道这不是正确的方法,因为我一直看到错误“发送到客户端后无法设置头”,显然,因为第二个查询正在循环,所以我不会等待结果完成,然后再通过res.render推送它。非常感谢您的帮助
非常感谢,Ucin