使用Json数据渲染HTML页面

时间:2019-04-07 09:56:59

标签: node.js express handlebars.js


我有这个问题:
我有一个使用router.get(Express)服务的get请求。 在此功能中,我习惯于从sql db中获取数据。现在我有了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 个答案:

答案 0 :(得分:1)

您似乎没有将数组(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>