2016-02-24 5 views
1

На данный момент я должен проверить каждый потенциально существующий параметр отдельно.Как получить число параметров запроса запроса в express.js?

if (req.query.param1 != undefined) { 
} 
if (req.query.param2 != undefined) { 
} 
if (req.query.param3 != undefined) { 
} 
... 
+0

Я тестирую с 'свернуться -X ПОЛУЧИТЬ LOCALHOST: 9090/mypath param1 = 123 & param2 = 321' – MobileDream

ответ

3

Чтобы получить все параметры запроса:

Object.keys(req.query) 

Чтобы получить количество всех Params:

Object.keys(req.query).length 

Затем вы можете перемещаться по всем параметрам:

for(p in req.query) { 
    //... do something 
} 

UPD :

окружает ваш запрос в кавычках, чтобы сделать запрос прямо

curl -X GET "localhost:9090/mypath?param1=123&param2=321"

без котировок & в терминале делает команду работать в фоновом режиме.

+0

' console.log (Object.keys (req.query)), 'только возвращает' [ «param1 '] ' – MobileDream

+0

' Object.keys (req.query) .length' возвращает '1' – MobileDream

+1

@MatkoKlaic, каков ваш запрос' GET'? – isvforall

0

Если вы нажмете /mypath?param1=5&param2=10, то request.query даст {param1: 5, param2:10}.

Это означает, что request.query является объектом JavaScript с key в качестве имени параметра и value как значение параметра. Теперь вы можете сделать что-нибудь с ним, как вы хотите: Найти длину или итерацию над ней следующим образом:

for (var key in request.query) { 
    if (request.query.hasOwnProperty(key)) { 
    alert(key + " -> " + request.query[key]); 
    } 
} 

Поиск только length может не работать для вас, а потому, что вы можете иметь param1 и param3, с param2 отсутствует , Итерация будет лучше ИМО.

0

Вы хотите, чтобы число не неопределенных параметров было правильным? Это так просто;

var no = 0; 
for (var key in req.query) { 
    if(req.query[key]) no++; 
} 
+0

Этот фрагмент кода вызывает 'ReferenceError: ключ не определен'. – MobileDream

+0

Как насчет этого? Используйте 'var key' –