Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js param前置条件中的命名路由_Node.js_Routing_Express - Fatal编程技术网

Node.js param前置条件中的命名路由

Node.js param前置条件中的命名路由,node.js,routing,express,Node.js,Routing,Express,如果在URL中设置了:slug参数,我想使用一个通过“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.

如果在URL中设置了:slug参数,我想使用一个通过“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
})

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

查看visionmedia的
express参数
模块。我希望它能得到很好的维护,因为它来自express本身的创建者

(安装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
});

但是我没有测试任何一个。

可能会重构,并且有两条路径将
checkSlug
作为堆栈中的第一项?抱歉,没有遵循;什么是checkSlug?有趣,它有用吗?顺便说一句,对于将来的问题,您不需要在代码中放入与问题无关的所有内容。对于本例,我们不需要路由中回调函数的所有内部信息来理解您在做什么。