Доступ к объекту SQL с помощью рулей для отображения на экране - PullRequest
0 голосов
/ 20 мая 2018

Я создаю приложение для книжного магазина и использую базу данных SQL с модулем mysqljs. Я могу получить все книги из базы данных, но хочу получить доступ к одной книге и просмотреть ее детали.

Я выбираю объект книги с помощьюего идентификатор, и я отображаю его в консоли

маршрут сведений о книге:

/* 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>

, но в нем отображается только «Ваше имя книги» без названия книги

1 Ответ

0 голосов
/ 20 мая 2018

Похоже, ваш шаблон ожидает объект Book в качестве контекста, а в своем примере кода вы передаете ему ключ результата, который отображается в массив, содержащий объект book.

Вот как яобычно отлаживают такие проблемы: я бы передавал литерал объекта в качестве контекста, просто чтобы убедиться, что метод рендеринга работает так, как я ожидал.

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

если это сработает, то вам нужно изменить модель, которую вы передаетестраница.так что вместо этого вы будете передавать запрос [0];

, если это не сработает, я бы записал весь объект контекста в шаблон для его отладки.этот пост должен помочь вам, как это сделать: Отображение контекста Handlebars.js в шаблоне

Удачи!

...