过滤 GAE 查询
尝试过滤 GAE 查询时,如果过滤器无效,则会出现常见问题。要解决此问题,必须了解 Query.Filter() 方法的运行方式。
Query.Filter() 方法返回包含指定过滤器的派生查询。然而,将返回值分配给新变量以保留过滤器至关重要:
q = datastore.NewQuery("employee").Filter("Name =", "Andrew W")
或者,新的过滤可以在一行中实现:
q := datastore.NewQuery("employee").Filter("Name =", "Andrew W")
不带此步骤中,执行的查询将没有过滤器,从而检索所有保存的“员工”实体。因此,“Joe Citizen”可能是第一个打印的实体。
此外,必须考虑最终一致性。执行Put()操作后,由于使用了开发SDK,后续查询可能无法立即看到预期结果。为了缓解这个问题,可以在执行查询之前引入 time.Sleep():
time.Sleep(time.Second) q := datastore.NewQuery("employee").Filter("Name =", "Andrew W")
在生产中,可以通过使用以下选项创建上下文来模拟强一致性:
c, err := aetest.NewContext(&aetest.Options{StronglyConsistentDatastore: true})
但是,需要注意的是,应使用祖先密钥来获得生产中的高度一致的结果。
以上是为什么我的 Google App Engine 数据存储区查询无法正确过滤?的详细内容。更多信息请关注PHP中文网其他相关文章!