gpt4 book ai didi

mongodb - Mongo-go-driver:超出上下文截止日期

转载 作者:行者123 更新时间:2023-12-01 22:35:52 24 4
gpt4 key购买 nike

我最近为我正在开发的应用程序升级到了更新的官方golang mongo驱动程序。
一切对于我的本地开发来说都是完美的工作,但是当我将其连接并指向后端服务器时,调用client.Ping(...)方法时出现“超出上下文期限”的情况。
旧的驱动程序代码仍然可以正常工作,我还可以打印出连接字符串,并且可以将其复制并粘贴到指南针应用程序中,并且可以正常工作。
但是对于我一生,我无法弄清楚为什么这个新代码返回上下文超时。唯一不同的是mongo在32680的非标准端口上运行,并且我也在使用mgm软件包。但是,它只是在后台使用正式的mongo驱动程序。
Mongo版本是:4.0.12(本地和远程)
连接代码在这里:

// NewClient creates a mongo DateBase connection
func NewClient(cfg config.Mongo) (*Client, error) {
// create database connection string
conStr := fmt.Sprintf("mongodb://%s:%s@%s:%s", cfg.Username, cfg.Password, cfg.Host, cfg.Port)

// set mgm conf ie ctxTimeout value
conf := mgm.Config{CtxTimeout: cfg.CtxTimeout}

// setup mgm / DateBase connection
err := mgm.SetDefaultConfig(&conf, cfg.Database, options.Client().ApplyURI(conStr))
if err != nil {
return nil, errors.Wrapf(err, "failed to connect to mongodb. cfg: %+v. conStr: %+v.", cfg, conStr)
}

// get access to underlying mongodb client driver, db and mgmConfig. Need for adding additional tools like seeding/migrations/etc
mgmCfg, client, db, err := mgm.DefaultConfigs()
if err != nil {
return nil, errors.Wrap(err, "failed to return mgm.DefaultConfigs")
}

// NOTE: fails here!
if err := client.Ping(mgm.Ctx(), readpref.Primary()); err != nil {
return nil, errors.Wrapf(err, "Ping failed to mongodb. cfg: %+v. conStr: %+v. mgmCfg: %+v", cfg, conStr, mgmCfg)
}

return &Client{
cfg: cfg,
mgmCfg: mgmCfg,
client: client,
db: db,
}, nil
}

帮帮我!我不知道我该如何调试呢?

最佳答案

尝试在您的DSN中添加您的authsource,
就像是

mongodb://USER:PASSWORD@HOST:PORT/DBNAME?authsource=AUTHSOURCE

关于mongodb - Mongo-go-driver:超出上下文截止日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63242975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com