Node JS mysql 循环查询 res.render 结果

问题描述

我在通过 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 (将#修改为@)