Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Melaksanakan Sifat Dinamik dalam Google App Engine\'s Go Datastore?

Bagaimana untuk Melaksanakan Sifat Dinamik dalam Google App Engine\'s Go Datastore?

Mary-Kate Olsen
Lepaskan: 2024-11-26 05:57:10
asal
728 orang telah melayarinya

How to Implement Dynamic Properties in Google App Engine's Go Datastore?

Menambahkan Sifat Dinamik pada Entiti dalam Go

Dalam stor data Google App Engine, anda mungkin menghadapi senario di mana anda perlu mentakrifkan sifat untuk entiti secara dinamik. Artikel ini meneroka teknik yang serupa dengan Model Expando Python untuk mencapai pengendalian sifat dinamik dalam Go.

Antara Muka Penjimat Beban Hartanah

Kunci untuk mencipta sifat dinamik terletak pada antara muka PropertyLoadSaver. Dengan melaksanakan antara muka ini, anda boleh membina sifat entiti secara dinamik pada menjimatkan masa.

Jenis Senarai Hartanah

Dengan mudah, platform Go AppEngine menyediakan jenis PropertyList, iaitu sekeping objek Harta. dan juga melaksanakan PropertyLoadSaver. Untuk mencipta model Expando dalam Go, hanya gunakan jenis PropertyList. Anda boleh menambah sifat yang diingini padanya dan ini akan disimpan sebagai sebahagian daripada entiti.

package main

import (
    "context"
    "time"

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

func main() {
    ctx := context.Background()

    props := datastore.PropertyList{
        datastore.Property{Name: "time", Value: time.Now()},
        datastore.Property{Name: "email", Value: "example@email.com"},
    }

    k := datastore.NewIncompleteKey(ctx, "DynEntity", nil)
    key, err := datastore.Put(ctx, k, &props)
    if err != nil {
        // Handle error
    }

    c.Infof("%v", key)
}
Salin selepas log masuk

Dalam contoh ini, entiti bernama "DynEntity" disimpan dengan dua sifat dinamik: "masa" dan "e-mel."

Pelaksanaan Peta Asli

Anda juga boleh melaksanakan antara muka PropertyLoadSaver dengan tersuai jenis, seperti peta. Coretan kod berikut menunjukkan cara membuat jenis DynEnt yang membalut peta:

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
}
Salin selepas log masuk

Jenis tersuai ini boleh digunakan untuk memuatkan dan menyimpan entiti secara dinamik:

d := DynEnt{"email": "example@email.com", "time": time.Now()}

k := datastore.NewIncompleteKey(ctx, "DynEntity", nil)
key, err := datastore.Put(ctx, k, &d)
if err != nil {
    // Handle error
}

c.Infof("%v", key)
Salin selepas log masuk

Pendekatan ini menyediakan cara yang fleksibel untuk menambahkan sifat dinamik pada entiti dalam stor data Google App Engine.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Sifat Dinamik dalam Google App Engine\'s Go Datastore?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan