【问题标题】:How routing works in Express with optional parameters?路由如何在 Express 中使用可选参数工作?
【发布时间】:2017-10-02 21:42:56
【问题描述】:

目前我的路由是这样的:

app.get('/post/:id?/:edit?/:add?') // ... func and something else

当我向 url '/post/' 发送查询时,不带参数,它会检索所有帖子。

'/post/5',其中 5 是帖子的 id,它在 db 中检索 id 为 5 的帖子。

'/post/5/edit',打开带有表单的页面,用于编辑当前帖子。

一切都很好。但是当我试图打开'post/add/ 时,它不起作用。因为req.params 在控制台中显示:id: 'add', edit: undefined, add: undefined。 如何解决?

【问题讨论】:

  • 所以我认为这是将许多功能放入一条路线的问题。这些功能中的每一个(获取、编辑、添加)都应该有自己的路线。否则,您将在该单一路由功能中投入大量开销。此外,对于编辑和添加,您应该使用 POST 请求(或者如果您真的很喜欢 PUT 和 POST)
  • 谢谢,我很可能会这样做。

标签: javascript node.js express


【解决方案1】:

req.params 基本上是一个数组,因此在您的情况下,第一个参数 req.params[0] 将始终是 req.params.id,无论您提供什么值,您的程序都会认为您正在尝试检索 id 为“add”的帖子。

您可能希望将“发布/添加”设为单独的路线,这样会更容易。

【讨论】:

    猜你喜欢
    • 2017-06-03
    • 2020-06-16
    • 1970-01-01
    • 2014-05-17
    • 2011-10-10
    • 1970-01-01
    • 2019-05-04
    • 2015-08-13
    • 2015-09-24
    相关资源
    最近更新 更多