Maison > développement back-end > Golang > le corps du texte

Dois-je utiliser `interface{}` pour les documents BSON dans Go ?

Barbara Streisand
Libérer: 2024-11-17 15:12:01
original
603 Les gens l'ont consulté

Should I Use `interface{}` for BSON Documents in Go?

Transmission de documents BSON à l'aide de Go

Lorsque vous travaillez avec Go et MongoDB à l'aide du package mgo, il est courant de rencontrer des difficultés lors de la transmission de documents BSON. Cet article aborde l'un de ces problèmes, en se concentrant particulièrement sur la question de savoir s'il faut ou non utiliser l'interface{} pour les documents BSON.

Problème :

Vous avez créé un BSON document, mais lorsque vous essayez de le transmettre à une fonction dans un autre package qui prend le type interface{}, vous rencontrez l'erreur : "panique : impossible de marshaler l'interface {} en tant que BSON document."

Solution :

Votre problème vient du fait que vous ne devriez pas créer vous-même des documents BSON. Au lieu de cela, vous pouvez définir une structure pour représenter le schéma de votre document, puis utiliser le package mgo pour gérer le marshaling et le démarshaling des données BSON.

Dans account.go :

Définissez une structure représentant votre compte :

type Account struct {
  Id       bson.ObjectId `bson:"_id"`
  BalanceAmount int
  // Other fields
}
Copier après la connexion

Dans dbEngine.go :

Mettez à jour la fonction Insert pour accepter un argument d'interface{} :

func Insert(document interface{}) {
  // Establish connection, get collection
  session, err := mgo.Dial("localhost")
  c := session.DB("db_name").C("collection_name")
  err = c.Insert(document)
  // Handle any potential errors
}
Copier après la connexion

Dans votre application principale :

Créez une instance de la structure Account et insérez-la dans la base de données :

acc := Account{}
acc.Id = bson.NewObjectId()
acc.BalanceAmount = 3
dbEngine.Insert(&acc)
Copier après la connexion

Cette approche permet à mgo de gérer correctement l'encodage et le décodage des documents BSON, éliminant ainsi le besoin de manipulation manuelle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal