登录
首页 >  Golang >  Go问答

无法创建/访问数据库

来源:stackoverflow

时间:2024-04-19 21:54:33 205浏览 收藏

有志者,事竟成!如果你在学习Golang,那么本文《无法创建/访问数据库》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我一直在 python 中使用 mongodb,没有出现任何问题,但我现在需要在 go 中构建一个客户端。 我已经查看了文档,示例工作正常。

但是,当我尝试使用自己的代码时,代码执行时没有错误,但是当我检查数据库(通过 cli)时,我看不到数据库,没有集合,也没有数据。

我确信我做错了什么,但我无法在这个小测试代码中找到它。

func main() {

    if client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017")); err == nil {
        ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
        defer client.Disconnect(ctx)
        if err = client.Connect(ctx); err == nil {
            os.Exit(0)
        }

        KeysCol := client.Database("yfroot").Collection("KeysCol")

        mac, e1 := crypto.GenerateRandomBytes(16)
        key, e2 := crypto.GenerateRandomBytes(16)
        if e1 != nil || e2 != nil {
            fmt.Println("failed crypto generate")
            os.Exit(0)
        }
        testKey := dataformats.DeviceKey{
            Mac: string(mac),
            Key: key,
        }

        // ctx, _ = context.WithTimeout(context.Background(), time.Duration(10)*time.Second)
        _, err := KeysCol.InsertOne(ctx, testKey)
        if err != nil {
            fmt.Println(err)
            os.Exit(0)
        }

    } else {
        fmt.Println(err)
    }
}

解决方案


看这部分:

if err = client.connect(ctx); err == nil {
  os.exit(0)
}

如果您能够连接到我们(errnil),则您将退出。

您可能打算这样做:

if err = client.Connect(ctx); err != nil {
  fmt.Println(err)
  os.Exit(0)
}

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

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