Redirect Express Node.js framework:如何通过替换一个命名的参数段来重新写入URL?

Redirect Express Node.js framework:如何通过替换一个命名的参数段来重新写入URL?,redirect,node.js,express,params,routes,Redirect,Node.js,Express,Params,Routes,在我的Express应用程序中,当路由中的某些参数符合某些条件时,我想使用路由参数前置条件执行一些重定向。例如,假设我希望paramword转换为全大写,如果它还没有转换的话 paramword可能存在于几个不同的路由中,例如/:word,/foo/:word,/foo/:word/bar,等等。幸运的是,在路由param的前提条件下,这些都由相同的代码处理,例如(CoffeeScript中的代码): 我的问题是如何构造新URL,将:word替换为它的大写等价物。我希望能够使用相同的函数来构造新

在我的Express应用程序中,当路由中的某些参数符合某些条件时,我想使用路由参数前置条件执行一些重定向。例如,假设我希望param
word
转换为全大写,如果它还没有转换的话

param
word
可能存在于几个不同的路由中,例如
/:word
/foo/:word
/foo/:word/bar
,等等。幸运的是,在路由param的前提条件下,这些都由相同的代码处理,例如(CoffeeScript中的代码):

我的问题是如何构造
新URL
,将
:word
替换为它的大写等价物。我希望能够使用相同的函数来构造
新的\u URL
,而不管当前正在使用哪个路由


我看到有
req.route
,但它没有定义。我想我可以通过
req.app.routes.routes.get[req.\u route\u index]
访问当前匹配的路由,然后拆分
路径
,并重新构建它,但这似乎太复杂了。是否有一种方法可以简单地迭代当前路线的
路径
段?谢谢

我最后编写了一个小函数,用一个新值替换一个命名路由参数。我不确定这是否是一个最佳的解决方案,也不是一个完整的解决方案(它肯定不会与名为params的nob段一起工作,比如
/:from-:to


关于在多个位置(不同文件中的错误、路由等)使用此函数,我得到的建议是将它们放在一个单独的文件中,并在需要的任何文件中使用它。

我最后编写了一个小函数,用一个新值替换命名路由参数。我不确定这是否是一个最佳的解决方案,也不是一个完整的解决方案(它肯定不会与名为params的nob段一起工作,比如
/:from-:to


我得到的关于在多个位置(我的错误、路由等,它们在不同的文件中)使用此功能的建议是将它们放在一个单独的文件中,并在需要的任何文件中使用它。

您最好对这个问题给出一个实际的答案(因此它被标记为已回答)然后问一个关于你的助手位置的新问题。谢谢Jason King,这很有意义。我将我的“更新”更改为答案。您最好对此问题给出一个实际答案(因此标记为已回答),然后再问一个关于您的助手位置的新问题。谢谢Jason King,这很有意义。我将我的“更新”更改为答案。
app.param 'word', (req, res, next, word) ->
  if word isnt word.toUpperCase()
    new_URL = // current URL, but replace word with word.toUpperCase() //
    res.redirect new_URL, 301
replaceRouteParam = (req, param, replacement) ->
  segments = req.app.routes.routes.get[req._route_index].path.split('/')
  new_segments = []
  for segment in segments
    if segment is param
      new_segments.push replacement
    else if segment[0] is ':'
      new_segments.push req.params[segment[1..]]
    else
      new_segments.push segment

  new_segments.join '/'