gpt4 book ai didi

google-app-engine - 返回零结果的非根实体组查询

转载 作者:太空宇宙 更新时间:2023-11-03 15:34:24 24 4
gpt4 key购买 nike

我正在将一个应用程序从 Google App Engine 移植到 AppScale,并且在对实体组执行祖先查询时发现了奇怪的行为。

如果我在父代不是根的情况下执行祖先查询,查询将返回零结果。如果我以父级为根执行相同的查询,则会返回正确的结果。

用例子最容易说明:

class A(ndb.Model):
name = ndb.StringProperty()

class B(ndb.Model):
name = ndb.StringProperty()

class C(ndb.Model):
name = ndb.StringProperty()
active = ndb.BooleanProperty()
sort = ndb.IntegerProperty()

def main():
a = A(name='I am A')
a.put()

b = B(parent=a.key,
name='I am B')
b.put()

C(parent=b.key,
name='I am C1',
active=True,
sort=0).put()

C(parent=b.key,
name='I am C2',
active=True,
sort=1).put()

C(parent=b.key,
name='I am C3',
active=True,
sort=2).put()

query1 = C.query(C.active == True, ancestor=a.key).order(C.sort).fetch(10)
query2 = C.query(C.active == True, ancestor=b.key).order(C.sort).fetch(10)

print 'query 1 = %s' % len(query1)
print 'query 2 = %s' % len(query2)

如果我在 App Engine 上运行上述代码,两个查询都会得到 3 个结果。如果我在 AppScale 上运行它,那么第一个查询只得到 3 个结果,第二个查询得到 0 个结果。

AppScale 使用 Cassandra 作为数据存储。这是 App Engine 数据存储区和 Cassandra 之间行为的细微差别吗?

最佳答案

这是 AppScale 中的一个错误,我们使用所提供祖先的完整路径,而不仅仅是其根实体进行复合查询。它的修复可以在这里找到: https://github.com/AppScale/appscale/pull/1633

关于google-app-engine - 返回零结果的非根实体组查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26726725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com