2013-04-24 3 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를 찾은 다음 자바 스크립트를 사용하여 오류 메시지를 내보기에 표시합니다.

내 오류가 동일한 페이지에 나타나기를 원 하나, 성공한 곳에서 내 오류에 json 오류를 전달해야합니까?

또는 정지는 ajaxForm.js를 사용하는 대신 res.render 또는 res.redirect의 나는 오류를 처리 거기다과보기에 그것을 보여주는 res.status (500)

를 사용해야합니다. BadRequest를 감지하기 위해 자바 스크립트를 사용하지 않고?

보기에 선택적 변수가있을 수 있습니까? 내 견해로는 내가 어떤 값을 전달하지 않으면 # {variable}이 (가) 그 값을 묻는 것처럼 오류가 발생합니다. 선택 사항이 될 수 있습니까? 옥 템플릿을 사용하는 임

+0

이 질문은 2 개의 개별 질문이어야하며 사용중인 템플릿 엔진이 수십 가지 인 경우를 제외하고는 템플릿 질문에 지능적으로 대답 할 수 없습니다. –

+0

나는 그것을 편집 할 것이다. 옥 (jade) 템플릿을 사용하고 있습니다. –

답변

0

XHR 요청에 오류로 응답하려면 return resView.status(500).send(err);과 같은 것을 수행하면 err 개체가 JSON으로 다시 전송됩니다. 당신이 대신 HTML 오류 페이지를 렌더링 할 경우에 당신은 return resView.status(500).locals({err: err}).render('/errorPage');

당신은 당신이 사용하고 있지만 (&lt;에 등을 <을 설정)에 대한 가능성이 가장 높은 #{} 버전은 자동으로 HTML 문자를 탈출 할 템플릿 엔진 말하지 않았다 할 수 XSS 공격과 렌더링 문제를 피할 수있는 반면 !{}은 변수의 내용을 직접 이스케이프 처리하지 않고 렌더링합니다. 변수에 사용자 생성 콘텐츠가 포함되어 있으면 위험하지만 브라우저에 렌더링 할 HTML이 있으면 필요합니다.