Визуализация HTML-страницы с данными Json - PullRequest
0 голосов
/ 07 апреля 2019


У меня есть эта проблема:
У меня есть запрос на получение, который я обслуживаю с помощью router.get (Express). В этой функции я использую данные из моей базы данных sql. Теперь у меня есть эти данные в формате JSON.
Я хочу передать данные json рулю и отправить клиенту ответ с данными, отображаемыми только в html (визуализация полностью выполняется на стороне сервера).
Может быть, я немного запутался:
Есть ли решение для того, что я хочу сделать?


Экспресс:

//CHAT
router.get('/chatlist', ensureAuthenticated, (req,res)=>{
    let mittente = req.user.id;
    findUsersChat(mittente)
    .then(Chats=>{
        getChatData(Chats,mittente).then(ChatList=>{
            console.log("Lista2: " +ChatList);
            var obj=JSON.parse(ChatList);
            res.render('chatlist') ;
        })
        .catch(err=>console.log(err))

    });

})


Руль

<section id="gigs" class="container">
    <h1>Chats Available</h1>

        {{#each obj}}
        <h1>{{Nome}}</h1>
        <div class="form-group">
          <form method="POST" action="/users/chat">  
            <p>Utente numero : {{@index}}</p>
            <label for="name" value={{Nome}}>{{Nome}}</label>

          </form>

        </div>
        {{/each}}
  </section>

1 Ответ

1 голос
/ 07 апреля 2019

Похоже, вы не передаете массив (ChatList) вашему представлению. Вы можете сделать это, изменив свой код на это:

...
        getChatData(Chats,mittente).then(ChatList=>{
            console.log("Lista2: " +ChatList);
            res.render('chatlist', {objects: ChatList}) ;
        })
...

При этом массив "объектов" будет доступен в вашем представлении, и вы можете выполнять итерацию по нему.

Ваша страница теперь должна стать:

<section id="gigs" class="container">
    <h1>Chats Available</h1>

        {{#each objects}}
        <h1>{{./Nome}}</h1>
        <div class="form-group">
          <form method="POST" action="/users/chat">  
            <p>Utente numero : {{@index}}</p>
            <label for="name" value={{./Nome}}>{{./Nome}}</label>

          </form>

        </div>
        {{/each}}
  </section>
...