GAE-NDB:如何防止投影改变结果

ngu*_*yên 0 google-app-engine app-engine-ndb

我使用ndb投影,但确实改变了结果,结果如何不受投影的影响?

class T(ndb.Model):
  name = ndb.StringProperty()  
  name2 = ndb.StringProperty(repeated=True)

  @classmethod
  def test(cls):
    for i in range(0, 10):
      t = T(name=str(i))
      if i%2 == 0:
        t.name2=["zzz"]      
      t.put()

    qr = T.query()
    qo = ndb.QueryOptions(projection=['name', 'name2'])
    items, cursor, more = qr.fetch_page(20, options=qo)
    print len(items)

    qo = ndb.QueryOptions(projection=['name'])
    items, cursor, more = qr.fetch_page(20, options=qo)
    print len(items)
Run Code Online (Sandbox Code Playgroud)

结果是5,10

如何使结果是10,10?

谢谢

Gre*_*reg 5

空列表属性(重复= True)将不会被索引,因为它是投影查询用于返回结果的索引,将不返回没有属性值的实体.你的测试用例是易受最终一致性蒂姆的评论中提到,但它不是唯一的问题.