问题描述
我在通过 res.render 返回循环 MysqL 查询的结果时遇到问题。我正在运行两个查询;第一个查询从信息模式中提取表名,第二个查询针对第一个查询返回的每个表名运行。
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],rows1) {
rows1.forEach(function (item) {
rslt.push(item);
});
setTimeout(() => {
res.render('pbx/data',{ data: rslt });
},500);
})
})
});
})
这按原样工作,但我知道这不是正确的方法,因为我一直看到错误“在将标头发送到客户端后无法设置标头”显然,由于第二个查询正在循环,我没有在等待结果在通过 res.render 推送之前完成。非常感谢任何帮助。
非常感谢,乌辛
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)