为了账号安全,请及时绑定邮箱和手机立即绑定

MongoDB 错误“无可达服务器”与 golang

MongoDB 错误“无可达服务器”与 golang

Go
慕标琳琳 2023-02-06 14:39:40
我刚刚在 youtube ( https://youtu.be/GwQ1hvuSNJA ) 上关注了这个教程。go run main.go 但是在我如何弄清楚之后出现错误“无法访问服务器” ?我应该将 localhost 更改为 mongodb uri 吗?下面是源代码。var rnd *renderer.Rendervar db *mgo.Databaseconst (    hostName       string = "localhost"    dbName         string = "demo_todo"    collectionName string = "todo"    port           string = ":3000")func init() {    rnd = renderer.New()    sess, err := mgo.Dial(hostName)    checkErr(err)    sess.SetMode(mgo.Monotonic, true)    db = sess.DB(dbName)}func main() {    stopChan := make(chan os.Signal, 1)    signal.Notify(stopChan, os.Interrupt)    r := chi.NewRouter()    r.Use(middleware.Logger)    r.Get("/", homeHandler)    r.Mount("/todo", todoHandlers())    srv := &http.Server{        Addr:         port,        Handler:      r,        ReadTimeout:  60 * time.Second,        WriteTimeout: 60 * time.Second,        IdleTimeout:  60 * time.Second,    }    go func() {        log.Println("Listening on port ", port)        if err := srv.ListenAndServe(); err != nil {            log.Printf("listen: %s\n", err)        }    }()}
查看完整描述

1 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

作为旁注:github.com/globalsign/mgo早已无人维护(现在已经超过 4 年)。请使用官方 MongoDB Go 驱动程序


您可以将 MongoDB URI 传递给mgo.Dial(),而不仅仅是主机名。您未指定的部分将使用与您的实际值不匹配的默认值。所以提供一个完整的 URI。

它具有以下语法:

[mongodb://][user:pass@]host1[:port1][,host2[:port2],...][/database][?options]

例如,它可能很简单:

localhost

或更多参与,例如:

mongodb://myuser:mypass@localhost:40001,otherhost:40001/mydb

如果没有为服务器提供端口号,则默认为 27017。

URL 中提供的用户名和密码将用于验证进入以主机名末尾的斜杠命名的数据库,或者如果没有提供则进入“admin”数据库。身份验证信息也将保留在通过 New 方法获得的会话中。

所以这样做:

uri := fmt.Sprintf("mongodb://%s:%s/%s", hostName, port, dbName)
sess, err := mgo.Dial(uri)


查看完整回答
反对 回复 2023-02-06
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号