Node.js参数不能正常工作

Node.js parameters do not work properly

本文关键字:工作 常工作 js 参数 不能 Node      更新时间:2023-09-26

这是我的全局数组与json在我的用户。js:

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

路由器。功能:

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中按如下方式传递age,它仍然返回用户信息。

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

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

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

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

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

而不是创建一个循环来检查特定字段是否匹配。使用下划线可以更好地查找数组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
    });
}