gpt4 book ai didi

mysql - 在 Node Express 中渲染多个查询

转载 作者:行者123 更新时间:2023-11-29 17:01:08 26 4
gpt4 key购买 nike

我正在使用 Node.js (express) 和 MySQL,并且在尝试在同一路由中进行多个查询时遇到问题。它抛出的错误是:

Can't set headers after they are sent.

我的代码是这样的:

router.post('/test', function (req, res, next){
db.query("select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where
TABLE_NAME = 'registros';", function (error, results, fields) {

if (error) throw error;
res.render('test', {
columnNames: results
});});
db.query("SELECT * FROM registros", function (error, resp, fields) {

if (error) throw error;
res.render('test', {
dataRegistros: resp
});});

});

据我所知,这可能是因为它在同一条 route 渲染了两次。进行多个 SQL 查询并将其返回到 View 中的文件的正确方法是什么?

问候!

最佳答案

根据mysql nodejs driver您可以设置它来组合查询并返回一个包含结果的数组

您必须在创建连接时设置此项:

mysql.createConnection({multipleStatements: true});

然后使用两个查询发出请求

router.post('/test', function (req, res, next) {

var queries = [
"select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'registros'",
"SELECT * FROM registros"
];

db.query(queries.join(';'), function (error, results, fields) {

if (error) throw error;

res.render('test', {
columnNames: results[0], // First query from array
dataRegistros: resp // Second query from array
});

});

});

但是让我问一个问题,当实际查询所有行并可以从那里获取列时,为什么需要查询列名称?

关于mysql - 在 Node Express 中渲染多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52245174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com