"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo manejar las propiedades dinámicas en Google App Engine DataStore Usando GO?

¿Cómo manejar las propiedades dinámicas en Google App Engine DataStore Usando GO?

Publicado el 2025-03-24
Navegar:733

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

cómo implementar propiedades dinámicas en Google App Engine DataStore

El almacén de datos de Google App Engine proporciona una potente solución de almacenamiento de datos para aplicaciones web, ofreciendo flexibilidad y escalabilidad. A veces, es necesario almacenar datos con propiedades dinámicas, lo que significa propiedades que no se declaran con anticipación. Esto se puede lograr en GO aprovechando la interfaz Propertyload de Google App Motor. Al implementar esta interfaz, obtiene control sobre el manejo de la propiedad dinámica.

Tipo de propiedad

La plataforma GO APP Engine proporciona un tipo de propiedad de propiedad que implementa la interfaz PropertyLoadSaver. Propertylist es esencialmente una porción de propiedades, lo que le permite agregar y eliminar las propiedades dinámicamente.

Ejemplo del uso de propiedades de propiedad

para crear una entidad con propiedades dinámicas usando Propertylist, siga estos pasos:

import "Google.golang.org/appengine/datastore", // Cree un propertylist para mantener las propiedades dinámicas. Props: = DataStore.Propertylist { dataStore.Property {nombre: "Time", Value: Time.Now ()}, datastore.property {nombre: "correo electrónico", valor: "[correo electrónico   protegido]"}, } // Crear una clave incompleta para la nueva entidad. K: = DataStore.newincompleteKey (CTX, "Dynentity", nil) // Guardar la entidad usando el Propertylist. Key, err: = DataStore.put (ctx, k, & props)

Este fragmento de código crea una entidad con el tipo de "dynentidad" de tipo y dos propiedades dinámicas: "tiempo" y "correo electrónico". El Propertylist se guarda como el valor para la entidad.

implementando su propia propiedadLoadSaver (opcional)
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)
También puede implementar su propia propiedad LoadSaver si es necesario. Aquí hay un ejemplo que usa un tipo personalizado llamado "Dynent":

import "google.golang.org/appengine/datastore" Escriba la interfaz de mapa de dinente [cadena] {} Func (D *Dynent) Load (Props [] DataStore.Property) Error { para _, p: = accesorios de rango { (*d) [p.name] = P.Value } regresar nulo } Func (D *Dynent) Save (props [] dataStore.property, error err) error { para k, v: = rango *d { props = append (props, dataStore.Property {nombre: k, valor: v}) } devolver err }

Este tipo de dinente se puede usar para almacenar entidades con propiedades dinámicas, como se muestra a continuación:

import "google.golang.org/appengine/datastore" // Crear un dinente con propiedades dinámicas. D: = Dynent {"correo electrónico": "[Correo electrónico   protegido]", "Time": Time.Now ()} // Crear una clave incompleta para la nueva entidad. K: = DataStore.newincompleteKey (CTX, "Dynentity", nil) // Guardar la entidad usando el dinente. clave, err: = dataStore.put (ctx, k, & d)
            
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3