我刚刚在 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)
- 1 回答
- 0 关注
- 116 浏览
添加回答
举报
0/150
提交
取消