Dépannage de l'utilisation de FindId() dans la bibliothèque Mgo de Golang
Lors de la tentative de récupération d'un document à l'aide de la fonction FindId() dans mgo, une erreur peut survenir en raison d'une valeur ObjectId non valide. Le message d'erreur « Les ID d'objet doivent avoir une longueur exacte de 12 octets » indique que l'ID fourni n'est pas au format attendu.
Comprendre le format ObjectId
Un ObjectId dans MongoDB est une valeur de 12 octets qui identifie de manière unique un document. Il est généralement représenté sous la forme d'une chaîne hexadécimale de 24 caractères. La bibliothèque mgo s'attend à ce que l'ObjectId soit fourni sous la forme d'un objet bson.ObjectId ou d'une représentation binaire de 12 octets.
Résolution du problème
Dans le code fourni, message.ID est une chaîne contenant la représentation hexadécimale de l'ObjectId. Pour utiliser cette valeur avec FindId(), elle doit être convertie en objet bson.ObjectId à l'aide de la fonction bson.ObjectIdHex() :
<code class="go">err = coll.FindId(bson.ObjectIdHex(message.ID)).One(&result)</code>
En utilisant bson.ObjectIdHex(), vous vous assurez que la valeur fournie La chaîne est correctement interprétée et convertie en une valeur ObjectId valide, résolvant ainsi l'erreur.
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!