Атрибуты таблицы базы данных не отображаются на странице html - PullRequest
0 голосов
/ 24 февраля 2020

Я реализую веб-приложение с 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}]}

Так что в нем содержатся значения, почему не появляется?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...