我正在开发一个在Golang和使用Mongo的数据库后端的网络应用程序.然而,我意识到,每当我没有互联网连接或使用公共wifi时,我就无法连接到我的Mongo Atlas.这将导致我的本地服务器死机,我将不得不依赖于特定的连接来运行我的应用程序和自检.

我有没有办法在没有适当的互联网连接的情况下继续发展?如有任何帮助,我们不胜感激.下面是我初始化数据库的代码.

玩.

func main() {
    fmt.Println("hello world")
    ctx := context.Background()
    config.InitializeConfig()
    dbDisconnect := database.InitializeDatabase(ctx)

    defer func() {
        if err := dbDisconnect(ctx); err != nil {
            panic(err)
        }
    }()

     // Other Initializations and App logic
}

InitializeDb.go

var clientInstance *mongo.Client

func InitializeDatabase(ctx context.Context) func(ctx context.Context) error {

    serverAPI := options.ServerAPI(options.ServerAPIVersion1)
    opts := options.Client().ApplyURI(getDBLink()).SetServerAPIOptions(serverAPI)

    client, err := mongo.Connect(ctx, opts)
    if err != nil {
        panic(err)
    }

    dc := client.Disconnect

    clientInstance = client

    if err := client.Database("admin").RunCommand(context.TODO(), bson.D{{Key: "ping", Value: 1}}).Err(); err != nil {
        panic(err)
    }
    fmt.Println("Pinged your deployment. You successfully connected to db")

    return dc
}

推荐答案

您可以设置与远程MongoDB相同 struct 的本地MongoDB.然后你可以在没有互联网连接的情况下测试它.(安装docker,然后输入下面的命令sudo docker run -p 27017:27017 mongo,这将按照下面网站27017中的步骤在端口MongoDB Installation上或没有docker上设置一个MongoDB实例.

我还建议您为MongoDB的主机和端口使用环境变量,这样您就不需要更改代码,只需更改环境变量即可连接到本地或远程数据库.

Mongodb相关问答推荐

如何判断 mongodb 聚合,该文档具有键,该键是一个数组,其第二个元素是否存在?

避免在 MongoDB 聚合框架中使用 ISODate() 以便管道可以是纯 JSON

将数据从一个集合插入另一个集合的聚合

在运算符 $map 中嵌入运算符 $exists

mongo:在 mongodb 6.0 docker 容器上找不到命令

在mongoose 中按键查找嵌套对象

根据状态过滤 mongoDb 中的结果

有谁知道这个错误的修复方法(TypeError: Cannot assign to read only property ‘map’ of object '#')

如何在 2 个应用程序之间共享mongoose模型?

mongo _id 字段重复键错误

你如何让 mongo 在远程服务器上运行?

在mongodb中实现分页

Mongo DB中的Upserting和Id问题

如何在任意深度查找 MongoDB 字段名称

ZonedDateTime 与 MongoDB

如何为 node.js 中的 MongoDB 索引指定 javascript 对象中的属性顺序?

Mongoose - 获取 _id 列表而不是具有 _id 的对象数组

MongoDb:聚合 $lookup 过滤外部文档

我需要手动关闭mongoose连接吗?

即使重新安装后,Mongo 仍在等待 27017