Maison >développement back-end >Golang >Comment gérer l'erreur « banque de données : l'aplatissement des structures imbriquées conduit à une tranche de tranches » dans Go Datastore ?
Gestion des tranches imbriquées dans la banque de données Go : erreur et solutions
Lors de la tentative de chargement d'entités de banque de données Google AppEngine dans un projet Go, les développeurs peuvent rencontrer l'erreur suivante : "banque de données : l'aplatissement des structures imbriquées conduit à une tranche de tranches : champ 'Messages'". Cette erreur se produit lorsque la définition du modèle Go inclut une tranche d'une structure qui contient également une tranche.
Pour résoudre ce problème, il est crucial de comprendre que la banque de données Go ne prend pas en charge les tranches multicouches. Les développeurs disposent des options suivantes :
Exemple :
Considérez les définitions de modèle suivantes :
Python :
<code class="python">class ModelB(ndb.Model): msg_id = ndb.StringProperty(indexed=False) ... class ModelA(ndb.Model): ... messages = ndb.LocalStructuredProperty(ModelB, name='bm', repeated=True)</code>
Go :
<code class="go">type ModelB struct { MessageID string `datastore:"msg_id,noindex"` ... } type ModelA struct { ... Messages []ModelB `datastore:"bm,"` }</code>
Dans ce cas, l'erreur survient car le modèle Go définit une tranche de ModelB (ModelA.Messages). Cependant, ModelB lui-même possède une tranche (ModelB.MessageID). Pour résoudre le problème, assurez-vous que ModelA.Messages est une tranche plate de ModelB ou reconcevez la structure des données pour éviter les tranches imbriquées.
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!