猿问

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

我刚刚在 youtube ( https://youtu.be/GwQ1hvuSNJA ) 上关注了这个教程。go run main.go 但是在我如何弄清楚之后出现错误“无法访问服务器” ?我应该将 localhost 更改为 mongodb uri 吗?下面是源代码。

var rnd *renderer.Render

var db *mgo.Database


const (

    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)

        }

    }()

}


慕标琳琳
浏览 179回答 1
1回答

红糖糍粑

作为旁注: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)
随时随地看视频慕课网APP

相关分类

Go
我要回答