Mencari Datastore untuk Entiti dengan Tatasusunan ID menggunakan Golang
Dalam Google App Engine Datastore, tiada sokongan langsung untuk melaksanakan " IN" untuk mendapatkan semula entiti berdasarkan tatasusunan ID. Walau bagaimanapun, terdapat pendekatan alternatif untuk mencapai fungsi ini.
Pertanyaan dengan Julat (Jika ID Berturut-turut)
Jika ID membentuk julat berterusan, anda boleh menggunakan ">" (lebih besar daripada) dan "<=" (kurang daripada atau sama dengan) pengendali untuk menentukan julat ID untuk pertanyaan. Contohnya:
<code class="go">ids := []int64{1, 2, 3, 4} q := datastore.NewQuery("Category").Filter("Id>=", 1).Filter("Id<=", 4)</p> <p><strong>Laksanakan Berbilang Pertanyaan</strong></p> <p>Untuk ID yang tidak berada dalam julat berterusan, anda boleh melaksanakan pertanyaan berasingan untuk setiap ID dalam tatasusunan. Ini melibatkan mencipta objek Pertanyaan baharu untuk setiap ID dan menapis mengikut ID tersebut.</p> <pre class="brush:php;toolbar:false"><code class="go">for _, id := range ids { q := datastore.NewQuery("Category").Filter("Id =", id) // ... perform query and retrieve entities }</code>
GetMulti Function
Jika sifat yang anda tapis ialah kunci entiti itu sendiri, anda boleh menggunakan fungsi datastore.GetMulti() untuk mendapatkan semula senarai entiti berdasarkan tatasusunan kuncinya.
<code class="go">var keys []*datastore.Key for _, id := range ids { keys = append(keys, datastore.NewKey(c, "Category", "", id, nil)) } categories := make([]Category, len(keys)) err := datastore.GetMulti(c, keys, categories) if err != nil { // Handle error }</code>
Nota:
Apabila menggunakan kaedah Penapis() untuk menentukan berbilang penapis, ia akan digabungkan dengan operasi DAN. Oleh itu, percubaan anda untuk menapis mengikut berbilang ID menggunakan q.Filter("Id =", id) berkemungkinan tidak akan menghasilkan entiti yang sepadan melainkan semua ID wujud dalam entiti yang sama.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Entiti dengan Susunan ID dalam Google App Engine Datastore menggunakan Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!