微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

express 中的高级可选路由 预期结果:req.query 返回一个与我想要的完全一样的输入对象

如何解决express 中的高级可选路由 预期结果:req.query 返回一个与我想要的完全一样的输入对象

我正在尝试使用 express 和 node.js 构建 crud 应用程序

示例查询字符串

/table/?id=78&title=someTitle&code=3

其中 ID、标题代码是可选的。意思:

  • 如果没有输入,则返回所有行。
  • 如果输入了 id,则返回具有该 ID 的行。
  • 如果输入了代码标题,则根据输入过滤行。
  • ...

但是问题是我必须输入带有空值的整个 url 字符串,或者这些值混合在一起,或者 express 无法识别我的正则表达式模式(模式根据 {{3 }} 网站)

我试过了:

  1. https://regexr.com

    路线:

    /table/\??(id=)?:id?\&?(title=)?:title?\&?(code=)?:code?
    

    路径:

    /table/?id=78&title=someTitle&code=3
    

    结果:

    https://forbeslindesay.github.io/express-route-tester/

  2. 创建了我自己的正则表达式:

    Image About express routing result on express-route-tester
website

    \/table\/\??(id=78)?\&?(title=someTitle)?\&?(code=3)?
    

    除非我添加可选的 express 参数,否则这将起作用。

预期结果:

Path    
     /table/?id=78

request.params

    { id: '78'} 

---- 
Path
     /table/?code=3

request.params

    { code: '3' }

----
Path
    /table/?id=78&title=someTitle

request.params

    { id: '78',title: 'someTitle' }

PS:我知道我可以通过将正则表达式与 request.url 匹配来实现这一点但我想知道是否还有其他方法可以使用 express。

解决方法

答案如下:

我可以通过使用 req.query 而不是 req.params

req.query 返回一个与我想要的完全一样的输入对象

路径

/table/?id=78&title=someTitle

请求.查询

{ id: '78',title: 'someTitle' }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。