2016-09-19 5 views
-1

Вот мой глобальный массив с JSON в моем users.js:Node.js параметры не работают должным образом

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 
}); 

}); 

Даже если I pas как указано в URL-адресе, он по-прежнему возвращает информацию о пользователе.

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

С 226 не любой из возрастов, определенных, он должен вернуть:

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

Даже если я ставлю любой возраст, она по-прежнему возвращает значения. Пожалуйста, направляйте.

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

router.get (" '/: идентификатор' + '+: возраст" я думаю, что это должно be router.get ('/: userid /: age /' – Andreas

+0

Вы правы andreas, но я хочу показать http: // localhost: 8080/users/1 + 24 в URL – dain

+0

пути к Вашей неправильной настройке – Beginner

ответ

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 
    }); 
} 
Смежные вопросы