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
Barbara Streisandoriginal
2024-11-20 02:33:01864parcourir

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)

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
}

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)

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