繁体   English   中英

节点/表达请求查询

[英]Node/Express Request Query

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

// 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”布尔值确定顺序。 现在查询似乎没有做任何事情。 我究竟做错了什么? 谢谢!

Querystring值始终以字符串形式返回,因此您应检查reverse === 'true'而不是reverse === true 这是因为Express的req.query直接从Node的querystring解析器( 此处的代码)中提取。 如果在Node中运行以下命令,您将看到结果为reverse参数返回一个字符串而不是布尔值。

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

请注意,使用request.query.reverse == true无效。 =====都将返回false。 因此,您需要执行== 'true'==='true'

https://github.com/jackypan1989/express-query-parser

帮助您隐藏所有不明确的字符串值

通常,您可以调用http:// localhost /?a = null&b = true&c [d] = false

并获取req.query = {a: 'null', b: 'true', c: {d: 'false'}}

该项目将帮助您解析正确的值。

req.query = {a: null, b: true, c: {d: false}}

做一个

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

我认为这是一个字符串,但是您正在检查该值是否匹配布尔值并且为true。 将值解析为布尔值或执行

if (request.query.reverse == true)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM