将env var传递到mongodb驱动程序时遇到问题

pvabu6sv  于 2023-08-01  发布在  Go
关注(0)|答案(2)|浏览(101)

Hello everyone:)noob here
为什么我从mongodb驱动程序的Connect()函数得到这个错误消息
我有这个代码:

// this Println() works fine
    fmt.Println(os.Getenv(MONGO_URI_ENV_VAR))

    client, err := mongo.Connect(  // this is where it's erroring out 
        context.TODO(),
        options.Client().ApplyURI(os.Getenv(MONGO_URI_ENV_VAR)),
    )
    if err != nil {
        log.Fatalf("mongo.Connect(): %s\n", err)
    }

字符串
我从env var fine中获得API键的printline,但mongo.Connect()函数出错,说:

2023/07/22 21:47:25 mongo.Connect(): error parsing uri: scheme must be "mongodb" or "mongodb+srv"


URL看起来像这样顺便说一句:

"mongodb+srv://<username>:<password>@<project-name>.mongodb.net/?retryWrites=true&w=majority"


附加信息:当我只传递一个普通的字符串而不是获取envar的值并将其传递到ApplyURI()方法时,它可以工作。但我不想把它交给回收公司

svdrlsy4

svdrlsy41#

我发现了,我通过shell向env var传递单引号,我认为这是你应该做的,因为shell会像这样解析保留字符:

MONGO_URI='mongodb+srv://<username>:<password>@<project-name>.mongodb.net/?retryWrites=true&w=majority'

字符串
但显然单引号不应该在这里

kknvjkwl

kknvjkwl2#

你需要在main.go文件中调用env load函数,并在main.go中添加mongoDB函数,这样就可以工作了。

err := godotenv.Load(".env")
if err != nil {
    log.Fatal("Error loading .env file")
}
mongoDbClient := configs.NewNoSqlDB()

字符串

相关问题