Javascript node.js中间件检查强制参数

Javascript node.js中间件检查强制参数,javascript,node.js,express,Javascript,Node.js,Express,我在当前应用程序中使用node.js和express。 我创建了几个中间件函数,每个函数的创建方式如下: function loadUser(req, res, next){ ... } 我想创建一个中间件来检查express操作中是否存在强制参数。例如,我有一个/user/create操作,它需要昵称、密码、电子邮件等。。。作为强制性参数。然后,我需要将这个参数列表传递给中间件,以便它可以检查req.query中是否存在这些参数 有什么想法吗 更新 我最终完成了以下工作(在express

我在当前应用程序中使用node.js和express。 我创建了几个中间件函数,每个函数的创建方式如下:

function loadUser(req, res, next){
  ...
}
我想创建一个中间件来检查express操作中是否存在强制参数。例如,我有一个/user/create操作,它需要昵称、密码、电子邮件等。。。作为强制性参数。然后,我需要将这个参数列表传递给中间件,以便它可以检查req.query中是否存在这些参数

有什么想法吗

更新

我最终完成了以下工作(在express文档中,有一个中间件示例需要额外的参数)


您是否尝试过将其作为动态助手而不是中间件来实现?它可能会工作。

参数是url或查询参数的一部分吗
/user/create/:name/:password/:email/
/user/create?username=…&password=…&email=…
?@Raynos,参数是查询的一部分。nice。只是一个问题,为什么要使用
eval(“req.query.”+arr[i])
req.query[arr[i]
也应该进行作业如果您使用req.param(arr[i]),您可以检查GET或POST参数。在这种情况下,它将在所有中间件之后调用,对吗?事实上,我希望这个params checker是第一个被调用的函数(在所有中间件之前)
function checkParams(arr){
  return function(req, res, next) {
    // Make sure each param listed in arr is present in req.query
    var missing_params = [];
    for(var i=0;i<arr.length;i++){
      if(! eval("req.query." + arr[i])){
        missing_params.push(arr[i]);
      }
    }
    if(missing_params.length == 0){
      next();
    } else {
      next(JSON.stringify({ "error" : "query error", "message" : "Parameter(s) missing: " + missing_params.join(",") }));
    }
  }
}
app.post('/user/create', checkParams(["username", "password"]), function(req, res){
  ...
});