以下是浏览器中的网址:
http://localhost:3001/user/59cc018171149931f4e435ac
这是路线的代码:
router.get("/new", middleware.userLoggedIn, function(req, res){
console.log(req.params.id);
//find user by id
User.findById(req.user._id, function(err, foundUser){
if(err) {
console.log(err);
} else {
res.render("characters/addCharacter", {user: foundUser});
}
});
});
这是中间件:
middlewareObj.userLoggedIn = function(req, res, next) {
// eval(require('locus'));
if (req.isAuthenticated() && req.params.id.equals(req.user._id)) {
return next();
}
res.redirect("/login");
};`
当我运行应用程序时,一切正常。期待上面路线上的请求,给我错误“TypeError:无法读取属性'等于'未定义”。当我取下中间件并尝试console.log(req.params.id)时,它返回“undefined”。我做错了什么?
编辑:
我在app.js中配置了我的路线:
app.use("/user/:id/characters", characterRoutes);
所以“:id”就在那里。
当我使用/new/:id
代替/new
时出现新的错误消息:
“无法获取/用户/ 59c23b864262fc2c186677be / characters / new”
答案 0 :(得分:1)
使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="table-responsive">
<table class="table table-striped table-bordered table-fixed table-hover table-condensed" style="border:0px; " id="myTable3">
<thead>
<tr>
<th width="">FileNo</th>
<th width="">Height</th>
<th width="">Weight</th>
<th width="">Temperature</th>
<th width="">Abdominal Circumference</th>
<th width="">Blood Pressure</th>
<th width="">Pulse</th>
<th width="">BMI</th>
<th width="">Chest Circumference</th>
<th width="">Time Recorded</th>
</tr>
</thead>
<tbody class="tbody">
</tbody>
</table>
<a id="add_row" class="btn btn-default pull-left">Add Row</a>
</div>
代替/new/:id
/new
答案 1 :(得分:1)
您必须在路径中指定所需的参数,例如/new/:id
,然后您可以在代码中使用req.params.id
。
这是此part
的Express文档答案 2 :(得分:0)
将req.params转换为任意一个:
让参数:任何= req.params
然后params.id应该可以工作