Decode以下代碼的步驟未正確填充原始對(duì)象document。它用一個(gè)bson對(duì)象覆蓋它。func main() { c := Call{} dbGetObject("collection", &c)}func dbGetObject(collectionName string, document interface{}) (err error) { uri, creds, auth := dbGetAuth() clientOpts := options.Client().ApplyURI(uri).SetAuth(creds) client, err := mongo.Connect(context.TODO(), clientOpts) if err != nil { log.Fatal(err) return err } defer client.Disconnect(context.TODO()) collection := client.Database(auth.Database).Collection(collectionName) err = collection.FindOne(context.TODO(), bson.M{"number": "12345"}).Decode(&document) if err != nil { log.Fatal(err) return err } return nil}然而,以下代碼確實(shí)可以正常工作:func dbGetObject(collectionName string) (err error) { uri, creds, auth := dbGetAuth() clientOpts := options.Client().ApplyURI(uri).SetAuth(creds) client, err := mongo.Connect(context.TODO(), clientOpts) if err != nil { log.Fatal(err) return err } defer client.Disconnect(context.TODO()) collection := client.Database(auth.Database).Collection(collectionName) c := Call{} err = collection.FindOne(context.TODO(), bson.M{"number": "12345"}).Decode(&c) if err != nil { log.Fatal(err) return err } return nil}唯一的區(qū)別是結(jié)構(gòu)的實(shí)例被傳遞到函數(shù)中而不是在函數(shù)中實(shí)例化dbGetObject。我究竟做錯(cuò)了什么
如何將mongodb解碼結(jié)構(gòu)傳遞給函數(shù)
繁華開滿天機(jī)
2022-07-11 16:57:56