node.js express.js View中的错误处理

时间:2013-04-24 03:24:02

标签: node.js error-handling express

我对node.js和express.js以及编程概念都很陌生。我已经在node和express上创建了一个基本的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)

无论如何都要处理错误并将其显示在视图中。不使用任何JavaScript来检测BadRequest?

视图是否有可选变量?在我的视图中如果我没有传递任何值,它会给我一个错误,如果我有#{variable}它要求它的值。可以选择吗?我正在使用玉模板

1 个答案:

答案 0 :(得分:0)

要回复带有错误的XHR请求,您可以执行return resView.status(500).send(err);之类的操作,这会将err对象作为JSON发回。如果您想要呈现HTML错误页面,则可以执行return resView.status(500).locals({err: err}).render('/errorPage');

您没有说明您使用的是哪个模板引擎,但#{}版本很可能会自动为您转义HTML字符(将<转换为&lt;等)以避免XSS攻击和渲染问题,而!{}将直接呈现变量的内容而不进行转义,如果变量包含任何用户生成的内容,这是危险的,但如果变量包含您希望由浏览器呈现的HTML则必需。