26

私はNode.js全体に慣れていないので、物事がどのように「接続」するかについてのコツをつかもうとしています。

エクスプレスフォーム検証を使用しようとしています。ドキュメントに従って、あなたはすることができます

app.post( '/user', // Route  
  form( // Form filter and validation middleware
    filter("username").trim()
  ),

  // Express request-handler gets filtered and validated data
  function(req, res){
    if (!req.form.isValid) {
      // Handle errors
      console.log(req.form.errors);

    } else {
      // Or, use filtered form data from the form object:
      console.log("Username:", req.form.username);

    }
  }
);

App.jsで。ただし、次のようなものapp.get('/user', user.index);を配置すると、コントローラーコードを別のファイルに配置できます。検証ミドルウェアでも同じことを行い(または検証コードをコントローラーに配置して)、ページを追加し始めたらApp.jsファイルの概要をわかりやすくしたいと思います。

これを達成する方法はありますか?

基本的には次のようなものを入れたいと思いますapp.get('/user', validation.user, user.index);

4

2 に答える 2

65

ルートを定義する方法は次のとおりです。

ルート.js:

module.exports = function(app){
    app.get("route1", function(req,res){...})
    app.get("route2", function(req,res){...})
}

ミドルウェアを定義する方法は次のとおりです。

ミドルウェア.js:

module.exports = {
    formHandler: function(req, res, next){...}
}

app.js:

// Add your middlewares:
middlewares = require("middlewares");
app.use(middlewares.formHandler);
app.use(middlewares...);

// Initialize your routes:
require("routes")(app)

別の方法は、ルートごとにミドルウェアを使用することです。

ルート.js:

middlewares = require("middlewares")
module.exports = function(app){
    app.get("route1", middlewares.formHandler, function(req,res){...})
    app.get("route2", function(req,res){...})
}

私はあなたの質問に答えることを望みます。

于 2013-02-19T13:50:27.447 に答える
3

コントローラ機能の場合とまったく同じ方法で、ミドルウェア機能を別のモジュールに配置できます。これは、適切なパラメータのセットを持つエクスポートされた関数です。

したがって、ファイルがある場合は、検証メソッドを次validation.jsのように追加できます。user

exports.user = function (req, res, next) {
  ... // validate req and call next when done
};
于 2013-02-19T13:50:01.747 に答える