我一直在使用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});
})
})
})
我知道我缺少确定在哪个查询上呈现哪个下拉列表,但我不知道如何。请帮助我。
最佳答案
您不能两次渲染同一页面。
res.render(...
用于编译(输入值,生成 View )并将其发送到服务器。您可以在一个语句中使用多个查询。查看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/