node js表达whil使用app.param 4 url​​ get request不起作用

时间:2015-12-14 07:23:59

标签: node.js express router

我正在使用app.param在url中输入一个用户用户名的参数,除了之后的任何get请求都没有加载客户端的html页面之外它都有效。我没有收到任何类型的错误,除非页面加载失败后我在页面上收到404错误。可能是什么问题,我甚至尝试了router.param并获得了相同的结果。显然,功能性要求它可以在多个页面上工作。

//Profile views for other users

app.param('username', function(req, res, next, username) {

    User.findOne({ 'local.username' : username }, function(err, user) {

        if(err)
            throw err;

        if(user==null) 
            return false;

        req.person = user;

    next();

    });

});

app.get('/:username', function(req, res) {

    Profile.findOne({ 'pic.username' : req.person.local.username }, function(err, profilepic) {

        if(err) {
            throw err;
        }
        console.log(profilepic);

        res.render('pages/visitprofile', {
        user : req.person,
        profilepic : profilepic

    });
    });

});

app.get('/photos/:username', function(req, res) {

    Profile.findOne({ 'pic.username' : req.person.local.username }, function(err, profilepic) {

        if(err)
            throw err;

        res.render('pages/photos', {
            profilepic : profilepic
        });
    });
});

app.listen(3000);
console.log('express is listening on port 3000');

1 个答案:

答案 0 :(得分:0)

使用app.get('/:username', callback)语法时,您需要查找req.params.username

app.get('/photos/:username', function(req, res) {
  res.send(req.params.username);
}