Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah cara saya bekerja dengan struct bersarang dalam Google App Engine (GAE) Datastore menggunakan Go?

Bagaimanakah cara saya bekerja dengan struct bersarang dalam Google App Engine (GAE) Datastore menggunakan Go?

Linda Hamilton
Linda Hamiltonasal
2024-10-27 02:20:03325semak imbas

How do I work with nested structs in the Google App Engine (GAE) Datastore using Go?

Struktur Bersarang dalam GAE Datastore dengan Go

Soalan:

Bagaimana saya boleh menggunakan struct bersarang dengan Enjin Aplikasi Google (GAE) stor data semasa bekerja dengan Go?

Jawapan:

API Datastore dalam Go tidak menyokong struct bersarang secara langsung. Walau bagaimanapun, penyelesaiannya ialah menggunakan antara muka PropertyLoadSaver yang disediakan oleh API.

Pelaksanaan:

  1. Tentukan struktur data anda mengikut kehendak anda, termasuk struct bersarang .
  2. Laksanakan kaedah Muat dan Simpan antara muka PropertyLoadSaver untuk struct utama anda. Kaedah ini akan bertanggungjawab untuk mensiri dan menyahsiri struct bersarang.
  3. Gunakan kaedah AddPropertyLoadSaver pada objek Key untuk mendaftarkan pelaksanaan PropertyLoadSaver untuk struct utama anda.

Contoh :

<code class="go">type Post struct {
    Field1 string
    Field2 string
    User   User
}

type User struct {
    UserField1 string
    UserField2 string
}

func (p Post) Load(ps []Property) error {
    for _, prop := range ps {
        switch prop.Name {
        case "Field1":
            p.Field1 = prop.Value.(string)
        case "Field2":
            p.Field2 = prop.Value.(string)
        case "User":
            if err := prop.Load(&p.User); err != nil {
                return err
            }
        }
    }

    return nil
}

func (p Post) Save() ([]Property, error) {
    props := []Property{
        {Name: "Field1", Value: p.Field1},
        {Name: "Field2", Value: p.Field2},
    }

    pLoad, err := appengine.Datastore().SaveStruct(p.User)
    if err != nil {
        return nil, err
    }

    props = append(props, pLoad...)

    return props, nil
}

// Usage
key := datastore.NewKey("Post", "someID", nil)

_, err := datastore.Put(ctx, key, &post)</code>

Pelaksanaan ini membolehkan anda menyimpan dan mendapatkan semula struct bersarang dalam cara berstruktur, sambil masih mendapat manfaat daripada keupayaan penapisan dan pertanyaan Datastore.

Atas ialah kandungan terperinci Bagaimanakah cara saya bekerja dengan struct bersarang dalam Google App Engine (GAE) Datastore menggunakan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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