Mongoose / Express / Nodejs尝试将变量从服务器传递到html

时间:2017-05-16 20:14:14

标签: javascript node.js mongodb express mongoose

我正在尝试将我的server.js文件中的变量传递给HTML,但该变量不会显示在我的EJS文件中。我必须丢失一些东西,因为它正在另一个路径(使用另一个EJS文件),但我看不到我试图传递的表单或变量。如果我把任何东西都放在它出现的表单之外,但表单本身不会显示,我可以从我的服务器上调用console.log,它显示我从我的模型中找到变量并且它通过了回调错误测试。我尝试使用工作的EJS代码代替表单,也不会显示。它再次出现在正确的位置,因为我可以在表格之外放置任何东西。

此外,我没有收到错误,表单和变量根本没有出现在EJS文件中。如果我更改了我的< %%>内的任何内容标签(如下所示):

<% for(var i=0;i<turtles.length;i++){ %>

它会导致错误(例如)未定义turtle(/ example)。所以它知道它就在那里。

提前谢谢。

我的server.js文件:

edit: function(req, res){
  Turtle.findOne({_id: req.params.id}, function(err, turtle){
      if(err){}
      else{
        console.log(turtle._id);
        res.render("edit", {turtles:turtle})}
        })
    },

我的edit.ejs:

<% for(var i=0;i<turtles.length;i++){ %>
  <h3><%= turtles[i].name %></h3>
<form action='/turtles/<%= turtles[i]._id %>' method='post'>
  <p>Name: <input type='text' name='name' value="<%= turtles[i].name %>"></p>
  <p>Favorite color: <input type='text' name='favecolor' value="<%= turtles[i].favecolor %>"></p>
  <p><input type='submit' value='Edit'></p>
</form>
<% } %>

1 个答案:

答案 0 :(得分:2)

你正在使用mongo驱动程序的findOne方法返回单个文档,一个对象,如果你想要的结果是一个数组,允许在.ejs模板中迭代,尝试使用{{1} }