栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何过滤GAE查询?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何过滤GAE查询?

(第一个)问题是:

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

Query.Filter()
返回包含您指定的过滤器的派生查询。您必须存储返回值并持续使用它:

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

或仅一行:

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

注意:没有此查询,您执行的查询将没有过滤器,因此将返回所有先前保存的那种实体

"employee"
,其中
"JoeCitizen"
可能是您看到的第一个打印的实体。

对于第一次运行,您很可能会看到0个结果。请注意,由于您不使用Ancestor查询,因此 最终的一致性适用
。开发SDK会模拟高复制数据存储库及其最终一致性,因此

Put()
操作后的查询将看不到结果。

如果

time.Sleep()
在进行查询之前先输入少量内容,则会看到预期的结果:

time.Sleep(time.Second)var e2 Employeeq := datastore.NewQuery("employee").Filter("Name=", "Andrew W")// Rest of your pre...

还要注意,在SDK中运行代码可以通过创建如下上下文来模拟 强一致性

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

但这当然只是出于测试目的,您不能在生产中这样做。

如果要获得高度一致的结果,请在创建键时指定一个祖先键,然后使用祖先查询。仅当您想要非常一致的结果时才需要祖先键。如果您满意,但可以延迟几秒钟才能显示结果,则不必这样做。还要注意,祖先键不必是现有实体的键,而只是语义。您可以创建任何虚构的密钥。对多个实体使用相同的(虚构的)键会将它们放入同一实体组,并且该组上的祖先查询将保持高度一致。

祖先键通常是一个现有键,通常是从当前用户或帐户派生的,因为它可以轻松创建/计算,并且可以保存/存储一些其他信息,但是如上所述,不必如此。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425706.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号