在参数前置条件中命名的路由

时间:2012-03-08 22:43:30

标签: node.js routing express

如果在网址中设置了:slug参数,我想使用Route Param Pre-Condition按“slug”获取投资组合项目。但是,我也希望使用RegExp来匹配URI。节点中是否支持命名捕获?我可以给([-\w]+)捕获一个名称,以便 slug 前置条件被触发吗?

app.param('slug', function(req, res, next, slug){
  // get thing from database by slug
})

//app.get('/work/view/:slug', function(req, res){
app.get(/^\/work\/view\/([-\w]+)/, function(req, res){
  // render view
})

1 个答案:

答案 0 :(得分:3)

我不确定这是否是您所寻找的,但据我所知,没有直接的方法可以做您需要的事情。但是,您可以使用命名参数(“slug”)并添加一个正则表达式预编码以及您自己的预编号来实现相同的效果。

查看visionmedia的express-params模块here。我希望它能保持得很好,因为它来自快递本身的创造者。

你要做什么(在安装express-params之后)基本上是这样的:

app.param('slug', /^[-\w]+$/);

app.param('slug', function(req, res, next, slug){
  // get thing from database by slug
});

app.get('/work/view/:slug', function(req, res){
  //render view
});

我没有测试任何这个。