节点/快速请求查询

我有一个端点,看起来像这样。

// 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)