节点/快速请求查询
我有一个端点,看起来像这样。
// 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); } });
响应是一个对象数组,我想要由查询参数'reverse'布尔值来确定顺序。 现在查询似乎没有做任何事情。 我究竟做错了什么? 谢谢!
查询string值总是作为string返回,所以您应该检查reverse === 'true'
而不是reverse === true
。 这是因为Express的req.query直接从Node的查询stringparsing器( 这里的代码)中拉取。 如果在Node中运行以下代码,则会看到结果为reverse
参数返回一个string而不是布尔值。
var query = require('querystring').parse('reverse=true'); console.log(query); // returns { reverse: 'true' }
请注意,使用request.query.reverse == true
将不起作用。 ==
和===
都会返回false。 所以你需要做== 'true'
或==='true'
。
做一个
console.log(typeof request.query.reverse );
我认为这是一个string,但你正在检查值是否匹配布尔值,是真实的。 将值分析为布尔值或做
if (request.query.reverse == true)