5

現在のアプリでnode.jsとexpressを使用しています。私はいくつかのミドルウェア関数を作成しました。それぞれは次のように作成されています。

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

エクスプレスアクションで必須のパラメータの存在をチェックするミドルウェアを作成したいと思います。たとえば、必須パラメーターとしてニックネーム、パスワード、電子メール、...を必要とする/ user/createアクションがあります。次に、このパラメーターのリストをミドルウェアに渡して、それらのパラメーターが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){
  ...
});
4

1 に答える 1

0

ミドルウェアではなく動的ヘルパーとして実装してみましたか? それはうまくいくかもしれません。

于 2011-04-20T02:48:09.637 に答える