go.mongodb.org包碰到的一個問題

問題一: 在ApplyUR函數中填寫參數時,頭幾次填寫爲空時還報錯,調試一久返回client不爲空,err爲空(至今很迷惑)

var mgoDB *mongo.Database

func Connect() {
	ctx, _ := context.WithTimeout(context.Background(), 2*time.Second)

	opt := options.Client().ApplyURI(viper.GetString("mongo.addrs"))
	if client, err := mongo.Connect(ctx, opt); err != nil {
		panic(err)
	} else {
		ctx2, _ := context.WithTimeout(context.Background(), 2*time.Second)
		err := client.Ping(ctx2, readpref.Primary())
		if err != nil {
			panic(err)
		}
		mgoDB = client.Database(viper.GetString("mongo.db"))
	}

}

以上代碼主要意思是:獲取配置中參數連接mongodb然後通過ping來檢查是否此client有效

問題二:爲什麼這麼做?(這也是我現在不得已的做法)

由於問題一中url無論填什麼它都不返回錯誤(後來查出問題是因爲它默認連接了本地的127.0.0.1:27017 我本身是連接的遠端),後來關閉本地服務err還是返回了

後來又碰到mongo的權限的問題,它不會通過連接來返回(connect返回的err)

意思是:無論url填密碼登陸還是無密碼
登陸都不會拋出錯誤(我在navicat中看到的是無密碼可以連接但是沒有庫,有密碼正常)

mongodb://用戶名:密碼@地址:27017

也就是說我操作的這個mongo官方包鑑權是方面可能存在不足,於是通過ping操作來判斷該連接是否有效

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章