mongodb-go-driverを使用して、内部例外を取得するにはどうすればよいですか?



With Mongodb Go Driver How Do I Get Inner Exceptions



解決:

あなたはこれで私に頭痛を救った。あなた自身の答えに基づいて、私は模倣するヘルパー関数を作成しましたmgo.IsDup()はerrors.Asを使用し、WriteErrorsをループしてコード11000を見つけます。

func IsDup(err error)bool {var e mongo.WriteException if errors.As(err、&e){for _、we:= range e.WriteErrors {if we.Code == 11000 {return true}}} return false}

データベースパッケージにあるので、電話するだけですdb.IsDup(err)



必要な場合は、ループを抽象化してエラーコードをチェックするだけだと思いますが、少なくともこの方法では、少し問題なくmgoから移行できます。


私はついにその方法を見つけました。基本的なエラーコードを取得する方がはるかに簡単なはずです。エラーが発生した場合、検出されたエラーの数を確認し、現在は最初のエラーのみを考慮しています。最初のエラーは複数のエラーを示していますが、エラーは1つだけです。これは実際には、重複の挿入の失敗または見つからないの検索エラーのみを探しています。もっと簡単な方法があれば教えてください。それまではこれが私が使用しているものであり、正常に動作します。ちなみに重複は11000です。



'セッションでの挿入に失敗しました:複数の書き込みエラー:[{書き込みエラー:[{E11000重複キーエラーコレクション:test.usersインデックス:roi_id_1重複キー:{:' 1 '}}]}、{}] n'

var merr mongo.WriteException merr = err。(mongo.WriteException)log.Errorf( 'エラー数:%d'、len(merr.WriteErrors))errCode:= merr.WriteErrors [0] .Code