2014-12-10 3 views
1

SailsJS에서 응용 프로그램을 만들고 있습니다. DB 관련 쿼리에서 오류가 발생하면 typeError 또는 500 오류와 같은 오류가 발생합니다. MongoDB를 사용하고 있습니다. 서버 측에서이 오류를 catch 할 수있는 방법이 있습니까?SailsJS의 서버 오류 처리

이제 이러한 오류로 인해 서버가 손상됩니다. 그리고 서버가 멈 춥니 다. 서버를 다시 시작해야합니다.

이 문제를 해결하는 데 도움을주십시오. 미리 감사드립니다.

답변

1

대부분의 흘수선에서 예외가 발생하고 있습니다. 여기에 해결하는 몇 가지 코드 : 당신은, 전체 응용 프로그램에서 app.js에 을 모든 글로벌 오류를 잡으려고 노력하는 경우

controlleAction:function(req,res){ 
    var invalidParams = {};//whatever's causing the error 

    Model 
    .create(invalidParams) 
    .exec(function(err,created){ 
    if(err) res.json(err); 
    res.json(created); 
    }); 
} 

당신도 약속 구문

controlleAction:function(req,res){ 
    var invalidParams = {};//whatever's causing the error 

    Model 
    .create(invalidParams) 
    .then(function(created){ 
    res.json(created); 
    }) 
    .catch(function(err){ 
    res.json(err); 
    }); 
} 

을 사용할 수 있습니다,

// Start server 
sails.lift(rc('sails')); 

서라운드과 같이 시도 캐치 블록 라인 :

과 같은 라인이있다3210
try{ 
    // Start server 
    sails.lift(rc('sails')); 
}catch(e){ 
    console.dir(e); 
} 
+0

"Custom Responses"에 있습니다. 그것은 실제로 일하고 있습니다. 하지만 서버에서 발생하는 모든 오류를 처리하는 일반적인 방법이 있는지 알고 싶습니다. 모델이 DB에 없거나 일부 코드가 잘못되어있는 것처럼 서버는 실행을 멈 춥니 다. 어떻게 든 던져진 오류를 잡을 수 있습니까? – DivyaMenon

+0

수정 된 답변을 확인하십시오. – aclave1

+0

나는 이것을 시험해 보았다. 작동하고있어. 그러나 프런트 엔드에 응답이 보내지지 않습니다. 로드 중입니다. 여기에 요청 및 응답 객체를 가져올 수 있습니까? – DivyaMenon

1

주의가하십시오 : 오류가있는 경우이 오류가있는 하나는 생성 된 객체와 다른 두 개의 응답을 보내려고하기 때문

controlleAction:function(req,res){ 
    var invalidParams = {};//whatever's causing the error 

    Model 
    .create(invalidParams) 
    .exec(function(err,created){ 
    // return res.json() 
    if(err) return res.json(err); 
    return res.json(created); 
    }); 
} 
// The difference is in the return 
if(err) return res.json(err); 

는 반환하지 않고, 서버가 충돌합니다 .

0

당신이 다음 처리기에 오류를 전달할 수 있습니다 0.10.x 돛을 사용하는 경우 : 나도 같은 코드를 준

controlleAction:function(req,res, next){ 
var invalidParams = {};//whatever's causing the error 

Model 
    .create(invalidParams) 
    .exec(function(err,created){ 
    if(err) return next(err); 
    return res.json(created); 
    }); 
} 

그리고 프로세스 오류

+0

이 방법을 시도하면 모든 서비스와 컨트롤러에서 올바르게 제공해야합니다. 내가 애플 리케이션, js에서 나는 단지 하나의 처리기를 줄 수있는 몇 가지 방법을 얻을 수 있습니다. – DivyaMenon

+0

비동기 작업의 결과로 콜백에 오류가 발생하면 처리 할 어딘가에 전달해야합니다 (이 경우 "다음"). "throw"의 결과로 "동기"오류가 있으면 "serverError"로 전달됩니다 "응답. – Zuker