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!