Я реализую веб-приложение с express, используя трехуровневую архитектуру . У меня есть blogposts в качестве ресурса, хранящегося в mysql database . Вот как выглядит таблица:
CREATE TABLE IF NOT EXISTS blogposts (
blogId INT NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
content VARCHAR(255) NOT NULL,
posted VARCHAR(255) NOT NULL,
imageFile VARCHAR(255) NOT NULL,
userId INT NOT NULL,
CONSTRAINT blog_id PRIMARY KEY (blogId),
CONSTRAINT id_fk FOREIGN KEY (userId) REFERENCES accounts(personId)
);
В моем data-access layer
у меня есть функция, которая получает идентификатор блога следующим образом:
exports.getBlogpostId = function(blogId ,callback){
const query = "SELECT * FROM blogposts WHERE blogId = ?"
const value = [blogId]
db.query(query, value, function(error, blogpost){
if(error){
callback(["DatabaseError"], null)
}else{
callback([], blogpost)
}
})
}
Теперь в presentation layer
I используйте эту функцию следующим образом:
router.get("/:blogId", function(request, response){
const blogId = request.params.blogId
blogRepo.getBlogpostId(blogId, function(errors, blogpost){
const model = {
errors: errors,
blogpost: blogpost
}
console.log("model:", model)
response.render("blogpost.hbs", model)
})
})
Эта функция будет вызываться, когда пользователь нажимает на запись в блоге, чтобы узнать о ней больше. Вот код html, который отвечает за показ блога:
{{#if blogpost}}
<h1 style="text-align: center;"><b>Blogpost</b></h1>
<div class="container card mb-4 p-1">
<img class="card-img-top" src="{{blogpost.imageFile}}" alt="Card image cap">
<div class="card-body">
<h2 class="card-title">{{blogpost.title}}</h2>
<p class="card-text">
{{blogpost.content}}
</p>
</div>
<div class="card-footer text-muted">
Posted on {{blogpost.posted}}, by {{blogpost.userId}}
</div>
</div>
{{else}}
<p>No blogpost with that id.</p>
{{/if}}
Моя проблема заключается в том, что blogpost.attribute не отображается. Мой console.log ("model:", model) генерирует этот вывод:
model: {errors: null, blogpost: [RowDataPacket {blogId: 1, title: ' Игра в видеоигры », контент:« ghngjynjy », опубликовано:« 2020-02-24 », imageFile:« smiley.jpg », userId: 1}]}
Так что в нем содержатся значения, почему не появляется?
Спасибо!