2017-01-14 2 views
0

プロジェクトのroutesフォルダにapisを作成していますが、検証を行うクラスを作成してすべてのルートで使用するにはどうすればいいですか? たとえば、ルートが新しいユーザーを作成し、特定のオブジェクトがエラーではなく、nullでないことを確認するために検証クラスを必要とする場合。ノードjsは明示的に1つのクラスを作成して別のルートで使用します

たとえば、クラスが空でないかどうかを検証するには 私はすでにエクスプレスバリデータ(req.assert)を使用していますが、クラスに変更するように求められました。

どのように私は私のルートで他のクラスを使用しないとどのように私はあなたがExpressを使用している場合、あなたはそれをミドルウェアを作成してから、useできるアプリに

router.post('/add',function(req,res){ 
    var record = req.body.record, 
    first_name = record.first_name, 
    middle_name = record.middle_name, 
    last_name = record.last_name, 
    phone_number = record.phone_number; 


    }) 
+0

あなたは[mongoose](http://mongoosejs.com/)を使用しますか? – Karlen

+0

mongooseとmongodbを使用しています – motchezz

答えて

0

を続行する前にデータを持って来るためにノードを強制んあなたのアプリケーションにあなたのすべてのルートにそれを適用する:

ミドルウェアは、次の署名を持つ関数です:function(req, res, next){}。あなたのケースでは、あなたができる:エクスプレスが提供するnext機能、

function myMiddleware(req, res, next) { 
    if (req.body.record) 
    next() 
    else 
    res.status(400).json({message: "No record in your body"}); 
} 

、あなたは次のミドルウェアやルートに行き、「継続」することができます。情報の流れは以下のようになります。

request recieved by the route --> middleware1 --> middleware2 --> ... --> response 

は、すべてのルートは、私たちの「最終ルート」、応答を返しますいずれかになります res.jsonまたは res.sendとミドルウェアと1で構成されていると言います。

..だからあなたはすべてのあなたのルートに、このミドルウェアを適用したい場合はあなたのケースでは、あなたが行うことができます:

app.use(myMiddleware) 

それとも、あなただけのルート上でそれを使用する場合:

router.post('/add', myMiddleware, function(req,res){ ... }); 

あなたが特定の接頭辞ですべてのルートにそれを適用したい場合は、次の手順を実行します。

var router = express.Router() 
router.use(myMiddleware) 
app.use('/record', router) 

はそれが役に立てば幸い、 歓迎

+0

おかげで多くの仲間 – motchezz

関連する問題