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

时间:2018-07-18 12:39:03

标签: mysql node.js express pug

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

Output.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 个答案:

答案 0 :(得分:0)

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

  2. 您可以在一个语句中使用多个查询。查看this so answer的操作方法。然后,您可以同时使用这两个响应来一次渲染页面。答案的要旨是

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

请注意,根据docs

  

出于安全原因禁用了对多条语句的支持(如果值未正确转义,则允许进行SQL注入攻击)。

在进行任何查询之前,请确保在服务器端清理输入。启用后,可以通过用分号;分隔每个语句来对多个语句执行查询。结果将是每个语句的数组。