Node.js参数无法正常工作

时间:2016-09-19 05:52:37

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

这是我在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
});

});

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

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

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

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

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

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

1 个答案:

答案 0 :(得分: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
    });
}