2016-10-12 3 views
0

MongoDBの書き込みエラーを処理するには(Mongo接続 dropのため)?私は複数のドキュメントの更新を行う必要があるので、基本的にはトランザクションの "Nothing or all"アプローチが必要です。私はエラーを捕まえて、更新が失敗した場合には挿入されたデータを元に戻すことができると考えました。しかし、MongoDB接続が切断された場合、アプリケーションの "uncaughtException"によって直接捕捉されます。どうすればこのシナリオを処理できますか?私が必要とするのは、マルチドキュメントのアップデートでは、「何もしない」だけです。Node.js:MongoDBの書き込みエラーを処理するには?

+0

mongodbにトランザクションはありませんが、[2フェーズコミット](https://docs.mongodb.com/manual/tutorial/perform-two-phase-commits/)アプローチを試すことができます。 –

答えて

0

MongoDBにはトランザクションが存在しません。 the one @Alex-Blex posted in the commentsのような2つの段階のコミットを行い、徐々に更新を実行するなどのいくつかの回避策があります。 (これは誤った名称のビットです。その例は、7デシベルのOPSを持っています。)

MongoDBの接続が切断あれば、直接あなたがして、このために聞くことができるアプリケーション

の「uncaughtException」でキャッチです接続disconnectederrorイベント:

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

私はあなたがあなたの「取引」の寿命のために1を設定することができたとしているが、それらの通常のリスナーは、アプリケーション全体です。あなたはreconnectedを待つ必要があり、データベース操作を再試行/再開する必要があります。いずれにしても、あなたは依然としてあなたのアプリケーションに依拠して、あなたの「取引」の全期間にわたって何らかの理由でクラッシュしないようにします。

トランザクションを信頼できるものにする必要がある場合は、おそらく別のデータベースを参照する必要があります。

関連する問題