2013-04-24 89 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,則這是非常危險的。