首頁 > 後端開發 > Golang > 為什麼我的 Google App Engine 查詢不能正確過濾?

為什麼我的 Google App Engine 查詢不能正確過濾?

DDD
發布: 2025-01-01 04:48:11
原創
597 人瀏覽過

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

高效的 GAE 查詢過濾

本文解決了過濾 Google App Engine (GAE) 查詢時遇到的常見問題。當過濾器似乎沒有生效時,就會出現問題,導致意外的搜尋結果。

考慮提供的程式碼片段:

q := datastore.NewQuery("employee")
q.Filter("Name =", "Andrew W")
登入後複製

在此範例中,目標是擷取具有特定名稱屬性「Andrew W」的實體。但是,查詢未按預期運行。要解決此問題,了解 Query.Filter() 傳回應用了篩選器的衍生查詢至關重要。因此,正確的方法是儲存和使用 Query.Filter() 的回傳值。

q := datastore.NewQuery("employee").Filter("Name =", "Andrew W")
登入後複製
登入後複製

或者,為了簡潔起見,可以將其寫在一行中:

q := datastore.NewQuery("employee").Filter("Name =", "Andrew W")
登入後複製
登入後複製

另一個需要考慮的重要因素是最終一致性,它會影響GAE 開發SDK中的資料儲存操作。這意味著在 Put() 操作之後立即執行的查詢可能不會立即傳回已儲存的實體。為了解決這個問題,可以在執行查詢之前引入短暫的延遲。

time.Sleep(time.Second)

var e2 Employee
q := datastore.NewQuery("employee").Filter("Name=", "Andrew W")
// Rest of the code...
登入後複製

為了獲得高度一致的結果,請考慮在建立金鑰時使用祖先金鑰。除非需要高度一致的結果,否則祖先鍵不是強制性的。如果結果的一些延遲是可以​​接受的,則不需要祖先鍵。

請記住,祖先鍵可以是僅用於語意的虛構鍵,不需要表示現有實體。分配了相同祖先鍵的實體形成一個實體群組,並且對該組的祖先查詢將是強一致的。

以上是為什麼我的 Google App Engine 查詢不能正確過濾?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板