Я создаю приложение книжного магазина, используя базу данных 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>
но он отображает только "Ваше имя книги" без названия книги
Он выглядит как ваш шаблон, ожидает объект Book как контекст, а в вашем примере кода вы передаете ему ключ результата, который отображается в массив, содержащий объект книги.
Вот как я обычно отлаживаю такие проблемы: я бы передал объектный литерал как контекст, чтобы убедиться, что метод рендеринга работает так, как я ожидаю.
res.render('shop/details', { title: 'Books', {BookName: 'Season of migration to the north',id: 198} });
если эта работа, то вам нужно изменить модель, которую вы переходите на страницу. поэтому вместо этого вы будете передавать запрос [0];
если это не сработает, я бы запустил весь объект контекста в шаблон для его отладки. этот пост должен помочь вам в этом: Display Handlebars.js контекст в шаблоне
Удачи!