使用手柄访问sql对象以在屏幕上渲染

lskq00tm  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(566)

我正在构建一个书店应用程序,我使用一个带有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 });
    });
});

在控制台上显示
这是控制台显示的内容
在我写的车把密码里

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

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

h4cxqtbf

h4cxqtbf1#

它看起来像您的模板,需要一个book对象作为上下文,并且在示例代码中,您向它传递一个result键,该键Map到包含book对象的数组中。
我通常是这样调试这些问题的:我会传递一个对象文本作为上下文,以确保render方法如我所期望的那样工作。

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

如果这样做有效,那么您需要更改传递到页面的模型。因此,您将传递请求[0];
如果这不起作用,我会将整个上下文对象记录到模板中进行调试。这篇文章应该可以帮助您如何做到:在模板中显示handlebars.js上下文
祝你好运!

相关问题