慕的地8271018
2022-05-23 15:14:25
我正在使用它的 ID 獲取帳戶的數(shù)據(jù)。目前,當(dāng)我進(jìn)行這個(gè)查詢時(shí),mongo-go-driver 會(huì)給出一個(gè)錯(cuò)誤,我想根據(jù)它的類型以不同的方式處理這個(gè)錯(cuò)誤。例如,如果文檔不存在,我想返回 404,但假設(shè)持有我的 mongodb 的實(shí)例下降,在這種情況下,我想返回 500。我該如何處理錯(cuò)誤類型:func (dao MongoDAO) Get(ctx *gin.Context, filter bson.M, entity interface{}) error { context, _ := context.WithTimeout(context.Background(), 5*time.Second) if err := dao.Collection.FindOne(context, filter).Decode(entity); err != nil { return err } return nil}
1 回答

當(dāng)年話下
TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以使用 mongo-go-driver 文檔 ( https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo?tab=doc#pkg-variables ) 中定義的錯(cuò)誤變量。有了這些,您也許可以執(zhí)行以下操作:
func (dao MongoDAO) Get(ctx *gin.Context, filter bson.M, entity interface{}) error {
context, _ := context.WithTimeout(context.Background(), 5*time.Second)
if err := dao.Collection.FindOne(context, filter).Decode(entity); err != nil {
if err == mongo.ErrNoDocuments {
// Return the 404
}
return err
}
return nil
}
- 1 回答
- 0 關(guān)注
- 117 瀏覽
添加回答
舉報(bào)
0/150
提交
取消