En este código, intento acceder al nombre de la Cardname
desde la base de datos de MongoDB, pero me da una cadena vacía. Aunque imprime todas las variables antes Cardname
, pero no imprime las variables después de Cardname
y Cardname
.
type UserCredentials struct { Fname string Lname string Email string Password string Phone string Country string State string Faddress string Laddress string Postal string Company string Cardname string Cardnumber string Expmonth string Expyear string } func FindCard(email, password string) { var uc UserCredentials collection := Connect.Database("eCommerce").Collection("register") if err := collection.FindOne(context.TODO(), bson.M{"email": email, "password": password}).Decode(&uc); err != nil { log.Fatal(err) } fmt.Println(uc.Cardname) }
El controlador mongo no descubrirá mágicamente qué campo de documento desea establecer en qué campo de estructura.
Hay algunas reglas de "sentido común", como los nombres de campo que coinciden con las propiedades (incluso si la primera letra no está en mayúscula), pero el nombre de campo Cardname
no coincidirá con el nombre de propiedad "card name"
.
Tienes que decirle a la asignación usando etiquetas de estructura, es decir, la etiqueta de estructura bson
(esto es lo que usa el controlador mongo-go).
Por ejemplo:
type UserCredentials struct { Fname string Lname string Email string Password string Phone string Country string State string Faddress string Laddress string Postal string Company string Cardname string `bson:"card name"` Cardnumber string `bson:"card number"` Expmonth string `bson:"expiry month"` Expyear string `bson:"expiry year"` }