我正在尝试动态填充模板上的下拉列表。我将公司 ID 添加到数组中,然后尝试将该数组传递给模板。
将 ID 添加到数组中:
var express = require('express');
//var mysql = require('./dbcon.js');
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 10,
host : 'localhost',
user : 'root',
password: 'Baseball247!',
database: 'award'
});
var app = express();
var handlebars = require('express-handlebars').create({defaultLayout:'main'});
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');
app.set('port', 3000);
app.use(express.static('public'));
app.get('/add-user', function(req,res){
var context = {};
pool.query("SELECT id from company;", function(err,rows,fields){
if (err){
console.log(err);
next(err);
return;
}
context.results = rows;
var companies = [];
//console.log('The solution is: ', rows.length);
for (var i =0; i < rows.length; i++) {
//console.log('The solution is: ', rows[i]["id"]);
companies.push(rows[i]["id"]);
}
console.log(companies);
res.render('addUser', {companies : companies});
});
});
然后,我尝试通过以下方式在下拉列表中显示这些值:
<select>
<% for(var i=0; i < companies.length; i++) { %>
<option><%= companies[i] %></option>
<% } %>
</select>
但是,当我查看网页时,下拉列表显示以下内容而不是公司 ID:
当我 console.log
数组时,我看到了正确的结果,因此我认为问题出在我如何传递数组或如何在模板中遍历/调用数组。有谁知道我在这里缺少什么?
最佳答案
select
的语法应该是:
<p>Company: <select name="company" id="company">
{{#each companies}}
<option>{{this}}</option>
{{/each}}
</select>
关于mysql - 使用 Node 和 Handlebars 动态填充下拉列表的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50081904/