0

我对 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} 它要求它的值。可以让它成为可选的吗?我使用翡翠模板

4

1 回答 1

0

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

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

于 2013-04-24T03:52:06.200 回答