Maison > développement back-end > Golang > Comment gérer les propriétés dynamiques dans Google App Engine Datastore à l'aide de Go ?

Comment gérer les propriétés dynamiques dans Google App Engine Datastore à l'aide de Go ?

Barbara Streisand
Libérer: 2024-11-20 02:33:01
original
847 Les gens l'ont consulté

How to Handle Dynamic Properties in Google App Engine Datastore using Go?

Comment implémenter des propriétés dynamiques dans Go sur la banque de données Google App Engine

La banque de données Google App Engine fournit une solution de stockage de données puissante pour les applications Web, offrant flexibilité et évolutivité. Parfois, il est nécessaire de stocker des données avec des propriétés dynamiques, c'est-à-dire des propriétés qui ne sont pas déclarées à l'avance. Ceci peut être réalisé dans Go en tirant parti de l'interface PropertyLoadSaver de Google App Engine.

Interface PropertyLoadSaver

L'interface PropertyLoadSaver vous permet de définir la manière dont les propriétés d'une entité doivent être chargées et enregistrées dans la banque de données. En implémentant cette interface, vous prenez le contrôle de la gestion dynamique des propriétés.

Type PropertyList

La plate-forme Go App Engine fournit un type PropertyList qui implémente l'interface PropertyLoadSaver. PropertyList est essentiellement une tranche de propriétés, vous permettant d'ajouter et de supprimer des propriétés de manière dynamique.

Exemple d'utilisation de PropertyList

Pour créer une entité avec des propriétés dynamiques à l'aide de PropertyList, suivez ces étapes :

import "google.golang.org/appengine/datastore"

// Create a PropertyList to hold the dynamic properties.
props := datastore.PropertyList{
    datastore.Property{Name: "time", Value: time.Now()},
    datastore.Property{Name: "email", Value: "[email protected]"},
}

// Create an incomplete key for the new entity.
k := datastore.NewIncompleteKey(ctx, "DynEntity", nil)

// Save the entity using the PropertyList.
key, err := datastore.Put(ctx, k, &props)
Copier après la connexion

Cet extrait de code crée une entité avec le type "DynEntity" et deux propriétés dynamiques : "time" et "email". La PropertyList est enregistrée en tant que valeur de l'entité.

Implémentation de votre propre PropertyLoadSaver (facultatif)

Vous pouvez également implémenter votre propre PropertyLoadSaver si nécessaire. Voici un exemple utilisant un type personnalisé appelé « DynEnt » :

import "google.golang.org/appengine/datastore"

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) error {
    for k, v := range *d {
        props = append(props, datastore.Property{Name: k, Value: v})
    }
    return err
}
Copier après la connexion

Ce type DynEnt peut ensuite être utilisé pour stocker des entités avec des propriétés dynamiques, comme indiqué ci-dessous :

import "google.golang.org/appengine/datastore"

// Create a DynEnt with dynamic properties.
d := DynEnt{"email": "[email protected]", "time": time.Now()}

// Create an incomplete key for the new entity.
k := datastore.NewIncompleteKey(ctx, "DynEntity", nil)

// Save the entity using the DynEnt.
key, err := datastore.Put(ctx, k, &d)
Copier après la connexion

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