0

アプリケーションが MongoDB サーバーからエラーを受け取ると、次のような問題が発生します。

MongoDB で検索を行ったが、タイムアウトのために MongoDB サーバーからの応答がエラーになったとします。

{ $err: "MongoTimeout が原因で...bla bla bla..." コード: 50 }

JacksonDBDecoder は、クラス「スタッフ」(「価格」や「重量」などのいくつかのフィールドを含む) などの Java タイプを期待していますが、前の JSON を受信すると、「価格」と「重量」に一致するフィールドはありません。 "なので、結果は空です: { }

空の JSON は mongo-java-driver クラス (正確には com.mongodb.QueryResultIterator.throwOnQueryFailure) によって処理され、元の情報「MongoTimeout due to...bla bla bla...」と 50 は記録されません。デコーダーは MongoDB サーバーからの JSON を理解できませんでした。

この種の MongoDB サーバーからの応答を処理するように mongojack または Jackson を構成する方法を教えてください。

どうもありがとう。

よろしく、パコ。

4

1 に答える 1

0

MongoDB サポートと話し合った後、彼らは私に次のことを確認しました。

「ドライバーチームは私たちの最後のコメントを読んで、これは確かにドライバーのバグであると信じています。基本的に、ドライバーはこれがクエリの失敗であることを検出し、MongoJack によって登録されたカスタムデコーダーではなく、デフォルトのデコーダーを使用してエラードキュメントをデコードする必要があると考えています。 .

最も重要な部分は、このバグが 3.x ドライバー シリーズに存在しないことです。そのため、3.2.2 ドライバーにアップグレードすることをお勧めします (MongoJack では、推奨される依存関係として 3.2 Java ドライバーがリストされていることに注意してください: http://mongojack.org/dependencies.html )。

したがって、それはモンゴジャックの問題ではありません;)

よろしく、パコ。

于 2016-03-30T14:57:33.980 に答える