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