【问题标题】:Accessing SQL object with handlebars to render on screen使用把手访问 SQL 对象以在屏幕上呈现
【发布时间】:2018-10-30 10:55:33
【问题描述】:

我正在使用带有 mysqljs 模块的 SQL 数据库构建一个书店应用程序,我可以从数据库中获取所有书籍,但我想访问一本书并显示其详细信息。

我通过它的 id 获取 book 对象并在控制台中显示它

预订详情路线:

/* GET Book Details page. */
router.get('/details/:id', function(req, res, next) {
    var sql = `SELECT * FROM books WHERE id = ${req.params.id}`;
    var query = db.query(sql, function (err, result) {
        if(err) throw err;
        console.log(result);
        var model = {result: result}
        res.render('shop/details', { title: 'Books', model });
    });
});

在控制台上显示

this is what the console displays

在我写的车把代码中

<h1 class="text-center">Book Details Here</h1>
<h3> Your Book Name is {{this.BookName}}</h3>

但它只显示“你的书名是”没有书名

【问题讨论】:

    标签: mysql node.js express handlebars.js mysqljs


    【解决方案1】:

    它看起来像您的模板,期望 Book 对象作为上下文,并且在您的示例代码中,您向它传递了一个结果键,该键被映射到包含 book 对象的数组中。

    以下是我通常调试此类问题的方式: 我会将对象文字作为上下文传递,以确保渲染方法按预期工作。

    res.render('shop/details', { title: 'Books', {BookName: 'Season of migration to the north',id: 198} });
    

    如果这可行,那么您需要更改传递给页面的模型。因此,您将传递 request[0];

    如果这不起作用,我会将整个上下文对象记录到模板中以对其进行调试。这篇文章应该可以帮助你如何做到这一点:Display Handlebars.js context in a template

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2021-12-18
      • 2021-09-01
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 2013-04-25
      • 2012-02-24
      • 1970-01-01
      相关资源
      最近更新 更多