不确定怎么说这个但是有可能让vars作为param传递,但在某些情况下有函数调用,如下所示?
router.get('/user/:id', function(){
if(req.params.id.toLowerCase() == 'edit') next();
//DISPLAY USER
});
router.get(/user/edit/:id', editUser);
或者只是可以像
一样router.get('/user/:id', displayUser);
router.get('/user/:id/edit', editUser);
这种方式工作正常但看起来更好我发现它在userend上设置了另一种方式
答案 0 :(得分:1)
displayUser实际上是一个函数或应该是;)并且是的,你的第一个假设几乎是正确的,除了你在函数调用中缺少req,res和next参数,如果实际上是中间件,如果不是下一个是不需要。我建议你阅读有关连接风格的中间件和一些关于javascript的信息
答案 1 :(得分:1)
如果您使用的是Express 4.0,您还可以访问router.param()函数,如下所示:
http://expressjs.com/4x/api.html#app.param
这使您可以创建一个功能,专门用于在您的站点出现时随时随地使用参数。例如,假设我的应用程序中有一个参数user_id,它每次出现时都是数据库中的pkid。我可以这样做:
app.param( 'user_id', function( request, response, next, id )
{
db.find( id, function( err, results )
{
if( !err )
{
request.params.user = results;
next();
return;
}
} );
next();
} );
但是,只有当参数总是映射到同一个东西时,这才有效。如果参数名称发生更改,或者参数包含的值发生更改,则无法帮助您。