2013-04-24 3 views
0

Я очень новичок в node.js и express.js и в понятиях программирования. Я уже создал базовое MVC-моделированное приложение на узле и express.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}, она запрашивает ее значение. Можно ли сделать это необязательным? Im using Jade Template

+0

Это должно быть 2 отдельных вопроса, и мы не можем разумно ответить на вопрос шаблона, если вы не укажете, какой из десятков популярных шаблонных двигателей вы используете. –

+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-код, который вы хотите отобразить браузером.

Смежные вопросы