在nodejs中使用params(expressjs)

时间:2014-03-27 08:23:15

标签: node.js express

我试图通过字符串设置params以便在我的webapp中进行路由:

app.param('id', /^\d+$/);

我需要它来做更好的路由设置,比如

app.get('/post/:id', show);

但是我收到了下一个错误:

throw new error ('invalid param() call for ' + name + ', got ' + fn)

我做错了什么?

1 个答案:

答案 0 :(得分:3)

从您的评论中,您似乎忘记了在app.param中包含允许支持正则表达式的示例代码部分。 The documentationapp.param('id', /^\d+$/);之前有以下代码:

app.param(function(name, fn){
  if (fn instanceof RegExp) {
    return function(req, res, next, val){
      var captures;
      if (captures = fn.exec(String(val))) {
        req.params[name] = captures;
        next();
      } else {
        next('route');
      }
    }
  }
});

包括,你应该没事。

或者,您可以使用express-params模块,其中包含该代码。