2012-08-24 58 views
0

我用ndb projection但它確實改變了結果,結果如何不受投影的影響?GAE-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) 

結果是5,10

如何使結果是10,10?

感謝

+0

對不起,蒂姆霍夫曼是錯誤的。下面的答案是正確的。 –

+0

刪除了我的評論,不想讓任何人誤導。 –

回答

5

空列表屬性(重複= TRUE)將不會得到索引並且它是投影查詢使用返回結果的指標,沒有價值實體的財產將不予退還。 您的測試用例易受Tim提到的最終一致性影響,但這不是唯一的問題。

+0

謝謝@格雷格。 –