Maison  >  Article  >  développement back-end  >  Comment corriger l'erreur « Les ID d'objet doivent avoir une longueur exacte de 12 octets » lors de l'utilisation de FindId() dans la bibliothèque Mgo de Golang ?

Comment corriger l'erreur « Les ID d'objet doivent avoir une longueur exacte de 12 octets » lors de l'utilisation de FindId() dans la bibliothèque Mgo de Golang ?

DDD
DDDoriginal
2024-10-31 19:41:01950parcourir

How to Fix

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!

Déclaration:
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