在hbs / html文件Node.Js中显示来自数据库的数据(使用mongodb)

时间:2018-05-24 18:05:43

标签: javascript node.js mongodb nosql

我开始研究node.js,现在我正在尝试做一个“Todo-App”。

我正在尝试找到将数据从我的数据库(使用mongodb)传输到我的hbs文件中的最佳方法,因此我可以显示它。

来自server.js - >服务器到hbs - >客户端(如果我错了请通知我,假设server.js当然是服务器而hbs文件是客户端)

所以,我成功通过传递一个数组。 但是当我试图在html设计中显示时,它看起来很糟糕。

代码:

app.get('/allTasks',(req,res)=>{ //get (go to) the allTasks (hbs file)
   Todo.find().then((todos) => {
     console.log(todos);
     var arrayOfTodos = [];
     todos.forEach(function(element){
       console.log("\n\n\n\n\n elemnt details: ",element.text + "\n",element.completed+"\n");
       arrayOfTodos.push(element.text,element.completed);
      });
      res.render("allTasks.hbs", {
        pageTitle: "Your tasks: ",
        todos: arrayOfTodos
        });
    });

});

结果是:

You can see a picture

正如你所看到的,它看起来很糟糕...因为它只是显示一个数组, 我想单独显示每个任务。 有小费吗?

非常感谢, Sagiv

2 个答案:

答案 0 :(得分:0)

而不是使用push,只需执行:

Todo.find().toArray(function(err, result){
   arrayOfTodos = result;
})

一旦你有阵列,设计与mongodb无关。您将需要学习如何使用渲染技术。您需要触摸您的html模板,因此您应该首先发布该模板。

答案 1 :(得分:0)

问题解决了。 我只需要学习如何处理hbs方面的数据。 所以代码是:(以hbs为单位)

    {{#each todos}}
{{missionNumber}} <br>
{{text}}<br>
completed = {{completed}}<br><br>
   {{/each}}

如你所见,每个都是一个循环,传递todos参数(我的数组) 我只需要以我想要的方式显示数据。

感谢您的帮助。