2016-10-12 2 views
0

MongoDB 쓰기 오류를 처리하는 방법 (Mongo 연결 drop 때문에)? 여러 문서에 대한 업데이트를 수행해야하므로 기본적으로 트랜잭션이 필요합니다. "아무것도 아니거나 모두"접근 방식입니다. 오류을 잡아서 업데이트 중 하나가 실패한 경우 삽입 된 데이터를 되돌릴 수 있다고 생각했습니다. 그러나 MongoDB 연결이 끊어지면 응용 프로그램의 "uncaughtException"에 의해 직접 catch됩니다. 그러면이 시나리오를 어떻게 처리 할 수 ​​있습니까? 필요한 것은 다중 문서 업데이트에서 "아무것도 아님"입니다.Node.js : MongoDB 쓰기 오류를 처리하는 방법?

+0

mongodb에는 트랜잭션이 없지만 [2 단계 커밋] (https://docs.mongodb.com/manual/tutorial/perform-two-phase-commits/) 접근 방식을 시도해 볼 수 있습니다. –

답변

0

트랜잭션이 MongoDB에 존재하지 않습니다. 점진적으로 업데이트를 수행하기 위해 2 단계 커밋을 수행하는 the one @Alex-Blex posted in the comments과 같은 몇 가지 해결 방법이 있습니다. (그것은 잘못된 약간이다 그들의 예 칠dB 작전 있습니다.)

MongoDB를 연결 떨어 뜨리면, 그것은 바로

당신은 함께이 수신 할 수 있습니다 응용 프로그램의 "의 uncaughtException"에 걸려있어 연결 disconnectederror 이벤트 : 나는 당신이 당신의 '거래'의 수명에 대해 하나를 설정할 수 있습니다 생각하지만

mongoose.connection.on("disconnected", function() { 
    // Lost connection to database 
}); 
mongoose.connection.on("reconnected", ...); 

는 일반적으로 그 청취자는 응용 프로그램 전체이다. reconnected을 기다렸다가 데이터베이스 op를 다시 시도하거나 다시 시작해야합니다. 어떤 경우에도 "거래"가 진행되는 동안 어떠한 이유로 든 크래시가 발생하지 않도록 애플리케이션에 의존하게됩니다.

트랜잭션을 안정적으로 수행하려면 다른 데이터베이스를 조사해야합니다.

관련 문제