Rumah >pembangunan bahagian belakang >Golang >Cara Mengambil Entiti mengikut ID dalam Google App Engine Datastore dengan Go: Alternatif kepada Pertanyaan \'IN Array\'?
Mendapatkan semula Entiti mengikut ID dalam Google App Engine Datastore dengan Go
Apabila bekerja dengan Google App Engine Datastore, adalah penting untuk melaksanakan pertanyaan yang cekap untuk mendapatkan semula entiti tertentu. Satu pertanyaan sedemikian ialah pertanyaan "IN Array", di mana anda boleh menapis entiti berdasarkan tatasusunan ID.
Cabaran dalam Melaksanakan Pertanyaan "IN Array"
In Pergi, API stor data tidak menyokong penapis tatasusunan "IN" secara langsung. Percubaan untuk menggunakan stor data.NewQuery("Kategori"). Penapis("Id IN", id) akan mengakibatkan ralat.
Pendekatan Alternatif
Semasa "IN " penapis tidak tersedia secara langsung, terdapat pendekatan alternatif untuk mencapai hasil yang sama:
1. Pertanyaan Berulang
Anda boleh melaksanakan pertanyaan berasingan untuk setiap ID dalam tatasusunan. Contohnya:
<code class="go">ids := []int64{1,2,3,4} for _, id := range ids { q := datastore.NewQuery("Category").Filter("Id =", id) }</code>
2. Pertanyaan Julat
Jika ID berada dalam julat berterusan, anda boleh menggunakan pertanyaan julat dan bukannya penapis "IN". Contohnya:
<code class="go">ids := []int64{1,2,3,4} q := datastore.NewQuery("Category").Filter("Id>=", 1).Filter("Id<=", 4)</code>
3. Fungsi GetMulti
Jika harta yang anda tapis ialah kunci entiti itu sendiri, anda boleh menggunakan fungsi stor data.GetMulti() untuk mendapatkan semula senarai entiti yang ditentukan oleh tatasusunan kunci mereka. Contohnya:
<code class="go">keys := make([]*datastore.Key, len(ids)) for i, id := range ids { keys[i] = datastore.NewKey(c, "Category", "", id, nil) } categories := make([]Category, len(keys)) err := datastore.GetMulti(c, keys, categories)</code>
Nota:
Pertanyaan berulang mungkin kurang cekap untuk tatasusunan besar. Pertanyaan julat sesuai untuk julat berterusan, tetapi pertanyaan itu tidak menyokong jurang. GetMulti dioptimumkan untuk mendapatkan semula entiti dengan kuncinya.
Atas ialah kandungan terperinci Cara Mengambil Entiti mengikut ID dalam Google App Engine Datastore dengan Go: Alternatif kepada Pertanyaan \'IN Array\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!