使用把手访问SQL对象以在屏幕上呈现

时间:2018-05-20 17:48:39

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

我正在使用带有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>

但它只显示“您的图书名称是”而没有图书名称

1 个答案:

答案 0 :(得分:0)

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

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

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

如果这样做,那么您需要更改传递给页面的模型。所以你将通过请求[0];

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

祝你好运!