我试图通过字符串设置params以便在我的webapp中进行路由:
app.param('id', /^\d+$/);
我需要它来做更好的路由设置,比如
app.get('/post/:id', show);
但是我收到了下一个错误:
throw new error ('invalid param() call for ' + name + ', got ' + fn)
我做错了什么?
答案 0 :(得分:3)
从您的评论中,您似乎忘记了在app.param
中包含允许支持正则表达式的示例代码部分。 The documentation在app.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
模块,其中包含该代码。