Express View引擎无法识别发送到前端的数据

时间:2018-09-23 06:26:46

标签: mysql node.js pug

我正在建立一个网站,并且正在尝试设置一个审查选项。我从Mysql数据库查询评论,然后将数据重新发送到“ .pug”文件。数据不显示。但是,它的确显示了我是否手动输入数据。例如

{review: "this is a review"}

这很好用,但是当我尝试直接访问数据时却不能。

var review;   
app.get('/', function(req,res) {
con.query("SELECT * FROM reviews.eatingReviews", function(err, rows) {
    review = rows[0].Review;
    console.log(review)
    if (err) throw err;
});
res.render('test',
    {review: review});

pug文件

   extends layout
   block content
      p= review

数据

 RowDataPacket {
 Name: 'James Laskey',
 Email: 'james.laskey23@gmail.com',
 Review: 'This book is classic!',
 Rating: 5 }

我需要获取此信息以供html识别。它一直显示为未定义。我在对象上尝试了JSON.parse,但这也不起作用。关于如何解决这个问题有什么想法吗?

1 个答案:

答案 0 :(得分:1)

该视图为空,因为res.rendercon.query完成从数据库中获取数据之前已执行。 con.query是一个异步功能。

作为解决方法,您必须将res.render放在con.query内:

con.query("SELECT * FROM reviews.eatingReviews", function(err, rows) {
    review = rows[0].Review;
    console.log(review)
    if (err) throw err;

    res.render('test',
      {review: review});
});