如何使用mongo-driver连接到其他软件包

阿米特·乌帕(Amit Upa):

我正在使用Mongo-drivergin框架。我已经写了代码在数据库包中连接mongodb,如果我在里面编写查询db/connect.go,它可以工作,但是当我dbcon在其他包中使用它时却不能。

db / connect.go:

var dbcon *mongo.Database
func ConfigDB() (*mongo.Database) {
    ctx := context.Background()
    client, err := mongo.Connect(
            ctx,
        options.Client().ApplyURI("mongodb://localhost:27017/todo"),
    )
    if err != nil {
        log.Fatal(err)
    }
    dbcon = client.Database("todo")

}

如果我在同一个db / connect.go中使用下面的代码,则它可以工作,但是当我在handler / task.go中使用相同的代码时,则不会。

func CreateTask() () {
    ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
    defer cancel()
    res, err := dbcon.Collection("ttest").InsertOne(ctx, bson.D{
        {"task", "test4"},
        {"createdAt", "test"},
        {"modifiedAt","test3"},
    })
    if err != nil {
        fmt.Println( err))
    }
}

我必须mongo-driver在我的项目中实施,但是由于上述问题,我面临实施的困难。

Eduardo Hitek:

您必须先导入才能将db / connect.go文件导入到handler / task.go中。这是行不通的,因为它们位于不同的程序包中。我认为您可以像这样重构代码

func ConfigDB() (*mongo.Database) {
    ctx := context.Background()
    client, err := mongo.Connect(
            ctx,
        options.Client().ApplyURI("mongodb://localhost:27017/todo"),
    )
    if err != nil {
        log.Fatal(err)
    }
    return client.Database("todo")

}

import (
"db/connect"
)

func CreateTask() () {
    ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
    defer cancel()
    res, err := ConfigDB().Collection("test").InsertOne(ctx, bson.D{
        {"task", "test4"},
        {"createdAt", "test"},
        {"modifiedAt","test3"},
    })
    if err != nil {
        fmt.Println( err))
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

仅在其他软件包中使用变量时,如何避免“已声明且未使用”?

有没有一种方法可以在Java中使用package-private来允许其他软件包访问?

如何在Nixos的Spacemacs范围内添加其他软件包?

发布Android应用错误:您需要使用其他软件包名称,因为Google Play中已经存在“ com.xxxx”

如何测试SocketIO服务器连接(使用pytest或任何其他软件包)?

如何使用其他名称安装R软件包?

如何要求依赖于其他本地软件包的本地软件包

为什么有些软件包需要使用“ from”导入,而其他软件包则需要使用“ import”导入?

如何识别阻止其他软件包较新版本的julia软件包?

如何在其他软件包的基础上构建R软件包?

作曲家-如何先安装/优先安装特定软件包,然后再安装其他软件包?

“ conda卸载”和“ pip卸载”是否也删除依赖关系,而仅删除其他软件包未使用的依赖关系?

专门用于符号的通用Lisp方法-不能在其他软件包中使用,不能导出?

如何将Keras_contrib(以及conda中不可用的其他软件包)下载到Pycharm?

在Gentoo上,如何重建所有依赖于其他软件包的软件包?

如何使用Photoshop或其他软件制作此类图片?

使用其他发行版中的软件包

软件包“ libpango”有问题,阻止其他软件包的安装,我该如何解决?

软件包“ libpango”有问题,阻止其他软件包的安装,我该如何解决?

如何删除所有其他软件包都不依赖的带有DNF的软件包

如何在不删除其他软件包的情况下删除gnome-games软件包?

如何创建自动安装其他软件包的元软件包?

如何在Ubuntu 14.04.2 LTS中为Python3从源代码安装numpy,scipy和其他软件包

如何为其他Ubuntu版本重建软件包

如何安装被--no-install-recommends标志忽略的其他软件包?

使用Stargazer或其他软件包在Knitr中呈现Zelig Logistic回归

是否有使用 Pyro 事件服务器(订阅)的替代方案 - 通过使用 Pyro4 或其他软件包?

以下软件包已损坏,因为它们依赖的其他软件包丢失。这些损坏的包必须重建才能使用

默认情况下,其他软件包是否需要/使用 Modernizr?