【问题标题】:Retrieve URL Parameters检索 URL 参数
【发布时间】:2020-05-24 23:28:43
【问题描述】:

我正在创建一个应用,其中每个列表都有多个任务。

创建新任务的 URL 类似于 /lists/:listId/tasks

在我的app.js 中,我这样做是为了将该 URL 重定向到名为 tasks.js 的特定路由文件:

app.use('/lists/:listId/tasks', tasks);

然后在我的tasks.js 中,我正在执行以下操作:

router.post('/', (req, res) => {
  console.log(req.params.listId) //This doesn't work.
});

如何从tasks.js 获取参数?另外,如果有更好的方法来实现我想要的,我会很高兴看到它。

【问题讨论】:

    标签: node.js express mean-stack


    【解决方案1】:

    您可以点击此链接https://github.com/expressjs/express/issues/696

    如果你把你的参数路由放到tasks.js 文件,那么问题就会自动解决。喜欢:

    app.js

    app.use('/lists', tasks);
    

    tasks.js

    router.post('/:listId/tasks', (req, res) => {
      console.log(req.params.listId);
    });
    

    它会正常工作。

    【讨论】:

    • 难道没有办法传递参数吗?
    • 我不这么认为,但在我的回答中给出了这个问题的链接,我认为 express.js 不支持这种类型的路由
    【解决方案2】:

    我针对这种情况采用的解决方法如下:

    app.use('/lists/:listId/tasks', (req, res, next) => {
        res.local.params = req.params;  //in res.local you can store whatever you want
        next();
    }, tasks);
    

    然后你就可以从tasks.js路由访问res.local了。

    【讨论】:

      【解决方案3】:

      我认为这应该可行

      app.get('/lists/:listId/tasks', (req, res) => {
        console.log(req.params.listId);
      })
      

      重定向!试试这个

      app.get('/lists/:listId/tasks', (req, res) => {
        console.log(req.params.listId);
        //if you have a route set up already 
        res.redirect('/task');
      })
      

      【讨论】:

      • 我要检索路由中的参数,而不是在同一个调用中!。
      猜你喜欢
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      相关资源
      最近更新 更多