几天以来,我一直在练习NodeJS和Express。我想返回一个查询结果,并将其分配给NodeJS中的html表。这是我所做的:
//My controller
exports.mainpage = function(req,res){
sql = "SELECT * from students";
var qry = db.query(sql,function (err, result) {
if (err) throw err;
return result;
});
console.log(qry);
res.render('layouts/main', qry);
}
路线:
router.get('/', student_controller.mainpage);
HTML(使用把手):
<table class="table">
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th>Gender</th>
<th>DOB</th>
</tr>
</thead>
<tbody>
{{#each qry}}
<td>1</td>
<td>{{this.name}}</td>
<td>{{this.gender}}</td>
<td>{{this.dob}}</td>
{{/each}}
</tbody>
</table>
我遇到了很多错误。我猜我的代码是错误的。请帮助我更正此代码。
答案 0 :(得分:0)
您收到什么错误?
我将回答最明显的问题,不知道您遇到的所有错误:
最明显的问题是您从未在控制器中定义resultqry
。
您将数据库查询的结果分配给名为qry
的变量,但是随后将未定义和未声明的变量resultqry
发送到模板。
使用var qry =
代替var resultqry=
var resultqry = db.query(sql,function (err, result) {
if (err) throw err;
return result;
});
console.log(resultqry);
res.render('layouts/main', resultqry);
答案 1 :(得分:0)
我的假设是您没有在结果对象中获得结果。这是因为在进行渲染之前,您需要等待结果返回。尝试如下操作:
exports.mainpage = function(req,res){
sql = "SELECT * from students";
db.query(sql)
.then(result => res.render('layouts/main', result);
.catch(error => console.log(error) //put your error handler here
}