mysql - 多个控制字段在 Node.js 应用程序中不起作用

标签 mysql node.js express pug

我一直在使用nodejs、express、jade 和mysql 创建一个应用程序。问题是前端有两个选择菜单,需要从两个 mysql 表中获取数据。我只能拿一个。我是新手,所以请帮助我。

输出.jade 文件:-

    block sale
     select(id="cbosale", name="cbosale", class="custom-select custom-select-sm")
      option(value="") Select Sale
      each variable in data
       option(value=variable.SaleNo) #{variable.SaleNo}
    block state
     select(name="cbostate", id="cbostate", class="custom-select custom-select-sm")
      option(value="") Select State
      each state in data
       option(value=state.Statename) #{state.Statename}

App.js 文件:-

    app.get('/output', function(req, res){
     db.connect(function(err){
      db.query("SELECT DISTINCT(SaleNo) FROM tsales", function(err, result, fields){
       res.render('output', {title:"Output",data:result});
      })
      db.query("SELECT DISTINCT(Statename) FROM tstates", function(err, result, fields){
       res.render('output', {title:"Output",data:result});
      })
    })
   })

我知道我缺少确定在哪个查询上呈现哪个下拉列表,但我不知道如何。请帮助我。

最佳答案

  1. 您不能两次渲染同一页面。 res.render(... 用于编译(输入值,生成 View )并将其发送到服务器。

  2. 您可以在一个语句中使用多个查询。查看this so answer关于如何做到这一点。然后,您可以使用这两个响应一起渲染页面。该答案的要点是

    var connection = mysql.createConnection({multipleStatements: true});

请注意,根据docs

Support for multiple statements is disabled for security reasons (it allows for SQL injection attacks if values are not properly escaped).

确保在任何查询之前清理服务器端的输入。启用后,您可以使用多个语句执行查询,方法是用分号 ; 分隔每个语句。结果将是每个语句的一个数组。

关于mysql - 多个控制字段在 Node.js 应用程序中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51402253/

相关文章:

php - 在 PHP 中使用 $row[$variable] 和 LEFT JOIN 时出现空结果

node.js - Socket.io、集群、快速和同步事件

postgresql - Sequelize 在查询数据库时抛出一般错误消息

javascript - 无法读取 Node.js 中未定义的属性 'get'

node.js - connect.session 和 connect.cookieParser 的 secret 之间的区别?

mysql - 根据同一个表的不同条件,我需要两个不同的列值

mysql - Envers revinfo 表为空,但 _aud 表正常 - Spring Boot

mysql - 时间戳差异并单独获取小时、分钟和秒

javascript - mongodb 中 db.collection.find() 的返回类型是什么

node.js - 如何在 Windows 上手动安装 node.js connect?