Utilisation de structures imbriquées dans la banque de données GAE avec Go
La banque de données Google App Engine ne prend pas automatiquement en charge les structures imbriquées. Cependant, il existe des techniques pour réaliser efficacement cette fonctionnalité.
Une approche consiste à intégrer les informations utilisateur dans la structure de publication. Par exemple, considérons les définitions de structure suivantes :
<code class="go">type Post struct { Field1 string Field2 string User User // Nested user struct } type User struct { UserField1 string UserField2 string }</code>
En utilisant l'interface PropertyLoadSaver de Go, vous pouvez personnaliser la façon dont vos structures sont sérialisées et désérialisées à partir de la banque de données. Cela vous permet de contrôler la façon dont les informations utilisateur sont stockées et récupérées.
<code class="go">// Implement PropertyLoadSaver interface to serialize/deserialize nested struct func (u *User) Load(props []datastore.Property) error { for _, prop := range props { switch prop.Name { case "UserField1": u.UserField1 = prop.Value.(string) case "UserField2": u.UserField2 = prop.Value.(string) } } return nil } func (u *User) Save() ([]datastore.Property, error) { props := []datastore.Property{ datastore.StringProperty("UserField1", u.UserField1), datastore.StringProperty("UserField2", u.UserField2), } return props, nil }</code>
En implémentant cette interface, vous pouvez garantir que les informations utilisateur sont stockées en tant que propriétés imbriquées dans l'entité Post. Cette structure vous permet d'interroger et de récupérer efficacement les informations utilisateur imbriquées ainsi que les données de publication.
<code class="go">// Fetch the post and its embedded user information key := datastore.NameKey("Post", "my-post", nil) post := &Post{} if err := datastore.Get(ctx, key, post); err != nil { // Handle error } // JSON Marshal the post with its embedded user information jsonPost, err := json.Marshal(post) if err != nil { // Handle error }</code>
Cette approche fournit une solution flexible et efficace pour travailler avec des structures imbriquées dans la banque de données GAE à l'aide de Go.
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!