我一直在使用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});
})
})
})
我知道我不知道要在哪个查询中呈现哪个下拉列表,但是我不知道如何。请帮助我。
答案 0 :(得分:0)
您不能两次渲染同一页面。 res.render(...
用于编译(输入值,生成视图)并将其发送到服务器。
您可以在一个语句中使用多个查询。查看this so answer的操作方法。然后,您可以同时使用这两个响应来一次渲染页面。答案的要旨是
var connection = mysql.createConnection({multipleStatements: true});
请注意,根据docs
出于安全原因禁用了对多条语句的支持(如果值未正确转义,则允许进行SQL注入攻击)。
在进行任何查询之前,请确保在服务器端清理输入。启用后,可以通过用分号;
分隔每个语句来对多个语句执行查询。结果将是每个语句的数组。