2013-04-24 91 views
0

我对node.js和express.js以及编程概念非常陌生。我已经在节点上制作了一个基本的MVC建模应用程序并进行了表达。node.js express.js查看中的错误处理

我的问题是你如何处理错误,我得到这个下面的代码:

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? 
     } 
    }); 
} 

怀石料理仅仅是parse.com中间件,我不知道该怎么做,如果它得到了错误。通常我使用ajaxForm.js查找BadRequest,然后在我的视图中使用javascript显示错误消息。

我希望我的错误出现在同一个页面,它是成功的,我应该将json错误传递给我的视图吗?

或者仍然使用ajaxForm.js和替代res.render或res.redirect我应该使用res.status(500)

反正是有处理错误,并显示到视图中。没有使用任何JavaScript来检测BadRequest?

而且视图可以有一个可选变量?在我看来,如果我没有传递任何价值,它给了我错误,就像我有#{variable}它要求它的价值。它可以做成可选的吗?我使用玉石模板

+0

这应该是2个单独的问题,我们不能智能地回答模板问题,除非您指定您正在使用的几十个常用模板引擎中的哪一个。 – 2013-04-24 03:48:02

+0

我会编辑它。我正在使用玉模板。 – 2013-04-24 04:18:56

回答

0

要回应XHR请求并发生错误,您可以执行类似return resView.status(500).send(err);的操作,它会将err对象作为JSON发回。如果你想呈现一个HTML错误页面,而不是你可以做return resView.status(500).locals({err: err}).render('/errorPage');

你没有说你正在使用的模板引擎,但最有可能的#{}版本会自动逃跑HTML字符为你(把<&lt;,等等)以避免XSS攻击和渲染问题,而!{}将直接呈现变量的内容而不会转义,如果变量包含任何用户生成的内容,这是危险的,但如果变量具有您想要由浏览器呈现的HTML,则这是非常危险的。