簡體   English   中英

從route.js傳遞變量到我的.ejs頁面

[英]passing a variable from routes.js to my .ejs page

我正在嘗試通過數據庫查詢

var aboutUser = connection.query("SELECT about FROM users WHERE username = ?", req.user, function(err, rows) {});`

我想這樣通過

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

我已經在我的ejs頁面上嘗試過

<%= about %>

但未定義,有人可以在這里幫我嗎

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 }); });

出於多種原因,您不想長期這樣做,但至少這應該可以幫助您入門。

數據庫查詢的結果放在回調函數的行部分中。 它不是通過使用查詢本身返回的。 因此,如果要使用它並將其傳遞給模板,則可以將其放在回調函數中。 嘗試這個:

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
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM