req.params.id未定义,我无法弄清楚为什么

时间:2017-11-05 12:52:14

标签: node.js

以下是浏览器中的网址:

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”

3 个答案:

答案 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应该可以工作