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

时间:2011-04-19 19:43:12

标签: javascript node.js express

我正在使用node.js并在我当前的应用中表达。 我创建了几个中间件函数,每个函数都创建如下:

function loadUser(req, res, next){
  ...
}

我想创建一个中间件来检查快速操作中强制参数的存在。例如,我有一个/ user / create动作需要昵称,密码,电子邮件......作为强制参数。然后我需要将这个params列表传递给中间件,以便它可以检查req.query中是否存在这些参数。

有什么想法吗?

更新

我最终完成了以下操作(在快速文档中,有一个中间件示例需要额外的参数http://expressjs.com/guide.html#route-middleware)。

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){
  ...
});

1 个答案:

答案 0 :(得分:0)

您是否尝试将其实现为动态助手而非中间件?它可能会奏效。