在Node Express中呈现多个查询

时间:2018-09-09 13:51:21

标签: mysql node.js express

我正在使用Node.js(快速)和MySQL,尝试在同一路径中进行多个查询时遇到了问题。它引发的错误是:

  

发送后无法设置标题。

我的代码是这样:

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
});});

});

我知道这可能是因为它在同一条路线上渲染了两次。进行几个SQL查询并将它们返回到视图中的文件的正确方法是什么?

致谢!

1 个答案:

答案 0 :(得分:0)

根据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
    });

  });

});

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