Rumah >pembangunan bahagian belakang >Golang >Mengapa Pertanyaan Google App Engine Datastore Saya Tidak Menapis dengan Betul?

Mengapa Pertanyaan Google App Engine Datastore Saya Tidak Menapis dengan Betul?

Susan Sarandon
Susan Sarandonasal
2024-12-07 05:27:13527semak imbas

Why Aren't My Google App Engine Datastore Queries Filtering Correctly?

Menapis Pertanyaan GAE

Apabila cuba menapis pertanyaan GAE, isu biasa timbul apabila penapis kelihatan tidak berkesan. Untuk menangani masalah ini, adalah penting untuk memahami cara kaedah Query.Filter() beroperasi.

Kaedah Query.Filter() mengembalikan pertanyaan derivatif yang merangkumi penapis yang ditentukan. Walau bagaimanapun, adalah penting untuk menetapkan nilai pulangan kepada pembolehubah baharu untuk mengekalkan penapis:

q = datastore.NewQuery("employee").Filter("Name =", "Andrew W")

Sebagai alternatif, penapisan baharu boleh dicapai dalam satu baris:

q := datastore.NewQuery("employee").Filter("Name =", "Andrew W")

Tanpa langkah ini, pertanyaan yang dilaksanakan tidak akan mempunyai penapis, mengakibatkan pengambilan semula semua entiti "pekerja" yang disimpan. Akibatnya, "Joe Citizen" mungkin merupakan entiti pertama yang dicetak.

Selain itu, ketekalan akhirnya mesti dipertimbangkan. Selepas melakukan operasi Put(), pertanyaan seterusnya mungkin tidak serta-merta melihat hasil yang dijangkakan kerana penggunaan SDK pembangunan. Untuk mengurangkan isu ini, masa.Sleep() boleh diperkenalkan sebelum melaksanakan pertanyaan:

time.Sleep(time.Second)
q := datastore.NewQuery("employee").Filter("Name =", "Andrew W")

Dalam pengeluaran, konsistensi yang kukuh boleh disimulasikan dengan mencipta konteks dengan pilihan berikut:

c, err := aetest.NewContext(&aetest.Options{StronglyConsistentDatastore: true})

Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa kunci nenek moyang harus digunakan untuk hasil yang sangat konsisten dalam pengeluaran.

Atas ialah kandungan terperinci Mengapa Pertanyaan Google App Engine Datastore Saya Tidak Menapis dengan Betul?. 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