Maison > développement back-end > Golang > Comment puis-je créer des entités dynamiques dans la banque de données Google App Engine de Go ?

Comment puis-je créer des entités dynamiques dans la banque de données Google App Engine de Go ?

Mary-Kate Olsen
Libérer: 2024-11-25 15:29:11
original
719 Les gens l'ont consulté

How Can I Create Dynamic Entities in Go's Google App Engine Datastore?

Obtention de propriétés dynamiques dans la banque de données Google App Engine de Go

Dans App Engine de Python, le modèle Expando permet l'attribution dynamique d'attributs à des entités sans déclaration préalable. Cet article explique comment obtenir des fonctionnalités similaires dans Go à l'aide du magasin de données Google App Engine.

L'interface PropertyLoadSaver

La clé pour définir des entités dynamiques dans Go est l'interface PropertyLoadSaver. En implémentant cette interface, vous obtenez la possibilité de construire dynamiquement les propriétés d'une entité en un rien de temps.

Utilisation de PropertyList à partir de la plateforme Go App Engine

La plateforme Go App Engine propose le type PropertyList, qui est une liste d'instances de Property et implémente l'interface PropertyLoadSaver. En tirant parti de PropertyList, vous pouvez créer des entités dynamiques sans implémenter l'interface vous-même.

props := datastore.PropertyList{
    {Name: "time", Value: time.Now()},
    {Name: "email", Value: "johndoe@example.com"},
}
Copier après la connexion

Pour enregistrer cette liste en tant qu'entité, vous pouvez utiliser :

key, err := datastore.Put(c, k, &props)
Copier après la connexion

Implémentation de PropertyLoadSaver pour les types personnalisés

Pour plus de flexibilité, vous pouvez implémenter l'interface PropertyLoadSaver sur vos propres types personnalisés, tels que maps.

type DynEnt map[string]interface{}

func (d *DynEnt) Load(props []datastore.Property) error {
    for _, p := range props {
        (*d)[p.Name] = p.Value
    }
    return nil
}

func (d *DynEnt) Save() (props []datastore.Property, err error) {
    for k, v := range *d {
        props = append(props, datastore.Property{Name: k, Value: v})
    }
    return
}
Copier après la connexion

Avec cette implémentation personnalisée, vous pouvez désormais charger et enregistrer facilement des entités dynamiques :

d := DynEnt{"email": "johndoe@example.com", "time": time.Now()}
key, err := datastore.Put(c, k, &d)
Copier après la connexion

Cette approche vous accorde un contrôle total sur les définitions de propriétés de vos entités dynamiques. .

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