【问题标题】:Node.js parameters do not work properlyNode.js 参数无法正常工作
【发布时间】:2016-09-19 05:52:37
【问题描述】:

这是我的 users.js 中带有 json 的全局数组:

global.users = [
    {
        'id':1,
        'name' : 'Dain',
        'age' : 24,
        'hobby' : 'gaming'
    }
];

router.get 函数:

router.get('/:userid', function(req, res){

for(let i = 0 ; i < global.users.length ; i++){
    if(global.users[i].id === parseInt(req.params.userid, 10)){
        return res.json({
        user: global.users[i],
        message : 'Success',
        error: false
        });
    }
}
return res.status(404).json({
    message : 'User Not Found',
    error: true
});

});

但是,以下用于获取两个参数的函数无法按预期工作:

router.get("'/:userid'+'+:age'", function(req, res){
for(let i = 0 ; i < global.users.length ; i++){
    if( (global.users[i].id === parseInt(req.params.userid, 10)) && (global.users[i].age === parseInt(req.params.age, 10))){
        return res.json({
        user: global.users[i],
        message : 'Success',
        error: false
        });
    }
}
return res.status(404).json({
    message : 'User Not Found',
    error: true
});

});

即使我在 url 中按如下方式传递年龄,它仍然会返回用户信息。

http://localhost:8080/users/1+226

由于 226 不是任何定义的年龄,它必须返回:

{
    message : 'User Not Found',
    error: true
}

即使我输入任何年龄,它仍然会返回值。请指导。

http://localhost:8080/users/1+24

【问题讨论】:

  • router.get("'/:userid'+'+:age'" 我认为这应该是 router.get('/:userid/:age/'
  • 你是对的,andreas,但我想在 URL 中显示localhost:8080/users/1+24
  • 你的路线不正确
  • 你确定你的循环工作正常吗?如果条件总是为真,你确定吗?
  • @abdulbarik,...是的,先生

标签: javascript node.js express params express-4


【解决方案1】:

而不是创建一个检查特定字段是否匹配的循环。使用 underscoreJS 在数组http://underscorejs.org/#findWhere中查找数据更好

注意:(先安装模块下划线)

var _ = require('underscore');

var user = _.findWhere(global.users, {
    id: req.params.userid,
    age:  req.params.age
});

if (user !== null) {
    return res.json({
        user: user,
        message : 'Success',
        error: false
    });
} else {
    return res.status(404).json({
        message : 'User Not Found',
        error: true
    });
}

【讨论】:

    猜你喜欢
    • 2014-02-22
    • 2021-10-22
    • 2016-11-26
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    相关资源
    最近更新 更多