2016-10-10 11 views
0

POST要求でフィールドが欠落している場合に、エラー処理ミドルウェア機能を使用する必要がありますか?NODEでエラーミドルウェア機能を使用する場合

function (req, res, next) { 

    if (!req.body.mandatoryField){ 
     var err = new Error("missing field); 
     err.status(400); 
     next(err); // send response from error middleware 
    } 

} 

または私はエラーをスローcatually例のためにそれを保存する必要があります。つまり

model.save(function(err){ 
    next(err); 
} 

、POSTリクエストのやり過ぎで不正な入力のためのエラーを投げていますか?

私は投げやエラーなしに400ステータスレスポンスで直接応答する必要があります。

答えて

0

私はいないだろうを移動するための方法です。私はロギングサービスにエラーを送信するミドルウェアのエラー処理を保存します。通常は、一般的なエラーを横取りし、移動する前にログに記録します。ミドルウェアとして実行すると、ほとんどの場合、不必要で脆弱なすべての要求が傍受されます。

通常、これらの検証は、jQueryを使用するクライアントで行われます。つまり、dbへの旅行を保存します。ここで

は、私はエラーを処理するためのミドルウェアを使用する方法である:

//uncaught exception in the application/api, etc. Express will pass the err param. This doesn;t look for specific errors, it will log any general error it sees. 
app.use(function(err, req, res, next) { 
    //send to logging service. 
    next(err); 
}); 
//uncaught exception in Node 
if (process.env.NODE_ENV === 'production' || appConfig.env === 'production') { // [2] 
    process.on('uncaughtException', function(err) { 
     console.error(err.stack); // [3] 
     //log error, send notification, etc 

    }, function(err) { 
     if (err) {console.error(err);} 
     process.exit(1); // [5] 
    }); 
} 
0

これは本当にあなたのAPIの設計とそれを消費することに依存します。独自のフロントエンドを作成していて、HTTP 400エラー応答が意味することを処理できるのであれば、データベースのエラーを排除する方がはるかに簡単です。

あなたはよりきめ細かな検証をしたい場合は、ルート(またはミドルウェア経由)でそれをやっては:)

関連する問題