在快速js中使用隐藏字段

时间:2016-08-15 10:17:28

标签: javascript mongodb express ejs

我试图传递一个隐藏的id字段的值,并使用它从mongodb中检索记录并在点击&#34后显示在个人资料页面上;阅读更多"在索引页面上。这是index.ejs:

     <% for(i=0; i<users.length; i++){%>
        <div class="col-lg-3 center">
            <div class="text-center">
                <img class="img img-circle" src="<%= users[i].image %>" height="120px" width="120px" alt=""> <br>
                <h4><b><%= users[i].fname %> <%= users[i].lname %></b></h4>
                <ul class="list-inline social-buttons">
                <li><a href="<%= users[i].linkedin %>"><i class="fa fa-linkedin"></i></a></li>
                <li><a href="<%= users[i].gitHub %>"><i class="fa fa-github"></i></a></li>
                <li><a href="#"><i class="fa fa-twitter"></i></a></li>
                </ul>
                <input type="hidden" name="id" value="<%= users[i]._id %>" >
                <p><%=users[i].bio %>....<a href="prof">Read More</a></p>

            </div>
        </div><!-- col-lg-3 -->
        <% } %>

这里是profile.ejs:

 <div class="medium-4 small-12 columns">
    <h3> <%= users.fname %>  <%= users.lname %></h3>
    <p>Username: <%= users.username %></p>
    <p>Email: <%= users.email %></p>
    <p> Software Developer at <%= users.role %></p>
  </div>

并表达路线,users.js。

  app.get('/prof',function(req, res) {
     var id=req.body.id;
     var user = new User();
    mongoose.model('User').findById(id,function(err, users){
       console.log(users);
        res.render('pages/profile',{users:users});
     });
  });

这给了我一个错误&#34;无法读取属性&#39;用户名&#39; of null ..&#34;

我错过了什么?

1 个答案:

答案 0 :(得分:1)

您正在进行GET操作,但您尝试通过使用id抓取的POST参数发送req.body.variable_name值。

在这种情况下,您不需要隐藏字段,因为需要POST操作才能发送到服务器。尝试将id作为网址参数发送,可以使用req.param.idreq.query.id抓取,例如

http://example.com/api/users?id=4&token=sdfa3&geo=us

http://example.com/api/users/4/sdfa3/us

如果您想获取查询参数?id=57ada56845b8466147fc35b0,请使用req.query

<强> URL:

// GET /prof?id=57ada56845b8466147fc35b0

<强>标记:

<p><%=users[i].bio %>....<a href="prof?id=<%= users[i]._id %>">Read More</a></p>

<强>路线:

app.get('/prof', function(req, res) {
    var id = req.query.id; // 57ada56845b8466147fc35b0
    mongoose.model('User').findById(id, function(err, user){
        console.log(user);
        res.render('pages/profile', { users: user });
    });
});

对于其他参数用法

<强> URL:

// GET /prof/57ada56845b8466147fc35b0

使用req.params.id

<强>标记:

<p><%=users[i].bio %>....<a href="prof/<%= users[i]._id %>">Read More</a></p>

<强>路线:

app.get('/prof/:id', function(req, res) {
    var id = req.params.id; //57ada56845b8466147fc35b0
    mongoose.model('User').findById(id, function(err, user){
        console.log(user);
        res.render('pages/profile', { users: user });
    });
});