登录
首页 >  Golang >  Go问答

根据 MongoDB 类型处理错误

来源:stackoverflow

时间:2024-04-15 22:39:20 338浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《根据 MongoDB 类型处理错误》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

我正在使用帐户的 id 获取帐户的数据。目前,当我进行此查询时,mongo-go-driver 会给出一个错误,我想根据其类型以不同的方式处理此错误。例如,如果文档不存在,我想返回 404,但假设保存我的 mongodb 的实例失败了,在这种情况下我想返回 500。如何处理错误类型:

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
}

解决方案


您可以使用 mongo-go-driver 文档 (https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo?tab=doc#pkg-variables) 中定义的错误变量。有了这些,你也许可以做这样的事情:

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
}

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《根据 MongoDB 类型处理错误》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>