动态nodejs路由器调用检查var vs函数名称?

时间:2014-06-08 21:49:43

标签: javascript node.js express

不确定怎么说这个但是有可能让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上设置了另一种方式

2 个答案:

答案 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();
} );

但是,只有当参数总是映射到同一个东西时,这才有效。如果参数名称发生更改,或者参数包含的值发生更改,则无法帮助您。