2015-11-29 4 views
1

У меня есть конечная точка, которая выглядит так.Узел Запрос запроса на запрос

// GET /api/logs/ 
app.get('/api/logs', function (request, response) { 
    if (request.query.reverse === true) { 
    response.send((mainModule.logs).reverse()); 
    } 
    else { 
    response.send(mainModule.logs); 
    } 
}); 

Реакция представляет собой массив объектов, и я хочу, чтобы определяться парами запроса «обратные» логические. В настоящий момент запрос, похоже, ничего не делает. Что я делаю не так? Благодаря!

+0

Можете ли вы пояснить, «мой запрос, кажется, ничего не делает»? Означает ли это, что ни один оператор в if или block не выполняется? Если это означает, что ваша функция не будет вызвана, что будет проблемой в URL-адресе маршрутизации. –

+0

Остальное исполнялось каждый раз. Я сменил оператора на поиск «истины» как строки, и теперь все работает. – TJH

ответ

3

значения QueryString всегда возвращаются как строки, так что вы должны проверить reverse === 'true', а не reverse === true. Это связано с тем, что req.query Express's напрямую извлекается из анализатора запросов Querystode (код here). Если вы запустите в узле следующее, вы увидите, что результат возвращает строку, а не логическую для параметра reverse.

var query = require('querystring').parse('reverse=true'); 
console.log(query); // returns { reverse: 'true' } 

Обратите внимание, что использование request.query.reverse == true не будет работать. Оба == и === вернут false. Поэтому вам нужно будет либо == 'true', либо ==='true'.

+0

Отличная информация! Спасибо. – TJH

0

сделать

console.log(typeof request.query.reverse); 

Я думаю, что это строка, но вы проверяете, если значение соответствует логическому и верно. Либо разобрать значение булевой или сделать

if (request.query.reverse == true) 
Смежные вопросы