Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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 express中的嵌套管线,其中父管线包含参数_Node.js_Express_Url Routing - Fatal编程技术网

Node.js express中的嵌套管线,其中父管线包含参数

Node.js express中的嵌套管线,其中父管线包含参数,node.js,express,url-routing,Node.js,Express,Url Routing,定义路由层次结构的最佳方法是什么,这样我就可以有一个基本URL/page/:id,然后是像/page/:id/delete和/page/:id/edit,而不必在所有路径中重复/page/:id位 我尝试了以下操作,但子路由中没有idparam: pageActions = express.Router! pageActions.get "/delete", (request, response) -> request.params.id #undefined app.use

定义路由层次结构的最佳方法是什么,这样我就可以有一个基本URL
/page/:id
,然后是像
/page/:id/delete
/page/:id/edit
,而不必在所有路径中重复/page/:id位

我尝试了以下操作,但子路由中没有
id
param:

pageActions = express.Router!

pageActions.get "/delete", (request, response) ->
    request.params.id #undefined

app.use "/page/:id", pageActions

在路由指南中,我看不到任何关于此行为的提及,但在此处提供所有参数似乎很有用,特别是因为允许在路由的“装载路径”中使用参数。

有两件事我相信您可能会感到困惑

首先,您不应该使用delete函数的方法。相反,您应该使用该方法。这是两个HTTP快捷方式方法,它们映射到请求中发送的内容。显示ExpressJS支持的快捷方式的完整列表,路由器也可以使用这些快捷方式

其次,如果您正在使用,并且希望保留安装路由器路径中的参数,则需要使用
mergeParams
选项让ExpressJS知道:

var router = express.Router({mergeParams: true});

使用路由器的mergeParams选项从父级继承路由参数:

谢谢,刚刚找到mergeParams。我知道删除,只是不想在这种情况下乱搞表单或XHR。为什么你用另一个答案回答自己的问题?哈哈,这个网站太挑剔了。在我看到另一个答案之前,我写了这个。好了,奥卡姆剃须刀和所有的东西。我很高兴你找到了答案,不管你怎么做。这是该网站的重点,但该网站之所以有效,是因为人们愿意花时间帮助别人,除了得到一点赞扬,承认他们的努力和帮助之外,没有任何真正的好处。我不会说这是“吹毛求疵”。