将来自routes.js的变量传递给我的.ejs页面

时间:2017-07-24 17:52:30

标签: javascript node.js express ejs var

我正在尝试从我的数据库传递查询

res.render('profile.ejs', {
            user: req.user,
            about: aboutUser // get the user out of session and pass to template
          });`

我希望像这样传递它

<%= about %>

我在我的ejs页面上试过这个

SELECT unix_timestamp(time) as time, value1, value2 FROM tablename

但约未定义有人可以帮助我吗

2 个答案:

答案 0 :(得分:0)

数据库查询的结果放在回调函数的行部分。使用查询本身不会返回它。因此,如果您要使用它并将其传递给模板,则可以将它们置于回调函数中。试试这个:

connection.query("SELECT about FROM users WHERE username = ?",
req.user, function(err, rows) {
    res.render("profile", {user: req.user, about: rows[0]}) //Notice you don't need to add ejs to the end of the file
})

答案 1 :(得分:0)

connection.query的返回值不是查询的结果。相反,它是一个允许高级使用查询的排​​序对象。结果是传递给您提供的回调的第二个参数。在您的示例中,它名为rows。原因是因为查询是异步的。查询完成时将调用回调。

没有完美的方式来回答您的问题,因为正确执行此操作取决于您的应用程序的结构。但是,作为临时修复,这应该有效:

var aboutUser = connection.query("SELECT about FROM users WHERE username = ?", req.user, function(err, rows) { res.render('profile.ejs', { user: req.user, about: rows }); });

从长远来看,你不想出于各种原因这样做,但至少这应该让你开始。