0

私はnode.jsとexpress.js、およびプログラミングの概念に非常に慣れていません。ノードとエクスプレスで基本的なMVCモデルのアプリをすでに作成しました。

私の問題は、エラーをどのように処理するかです。次のコードを取得しました。

exports.submitBloodRequest=function(kaiseki,resView,request){
    var params = {
        bloodCenterId:request.session.centerID,
        bloodTypeId: request.body.bloodType,
        requestQuantity:request.body.numberOfDonors
    }
    kaiseki.createObject('blood_center_request', params, function(err, res, body, success) {
      if(success){
        resView.redirect('/bloodRequest')
      }else{
        //WHAT TO DO HERE?
      }
    });
}

Kaiseki は parse.com の単なるミドルウェアで、エラーが発生した場合の対処方法がわかりません。通常、私は ajaxForm.js を使用して BadRequest を探し、javascript を使用してビューにエラー メッセージを表示します。

エラーが成功した同じページにエラーを表示したいのですが、ビューに json エラーを渡す必要がありますか?

または、引き続き ajaxForm.js を使用し、res.render または res.redirect の代わりに res.status(500) を使用する必要があります

エラーを処理してビューに表示する方法はありますか。BadRequest を検出するために JavaScript を使用せずに?

また、ビューにオプションの変数を含めることはできますか? 私の見解では、値を渡さなかった場合、 #{variable} がある場合のようにエラーが発生し、その値を要求します。オプションにすることはできますか?ジェイドテンプレートを使用しています

4

1 に答える 1

0

XHR リクエストにエラーで応答するには、オブジェクトを JSON としてreturn resView.status(500).send(err);送り返すようなことを行うことができます。err代わりに HTML エラーページをレンダリングしたい場合は、次のことができます。return resView.status(500).locals({err: err}).render('/errorPage');

使用しているテンプレート エンジンについては言及していませんが、XSS 攻撃やレンダリングの問題を回避するために、この#{}バージョンでは HTML 文字が自動的にエスケープされ ( などに<変換されます) 、変数の内容はエスケープせずに直接レンダリングされます。変数にユーザーが生成したコンテンツが含まれている場合は危険ですが、変数にブラウザーでレンダリングしたい HTML が含まれている場合は必要です。&lt;!{}

于 2013-04-24T03:52:06.200 に答える