2013-07-22 34 views
0

我使用的是Android,並使用Google App Engine構建了我的項目。然而,當我收到我的實體清單後,他們會首先創建我。我需要他們回到相反的方向,或者只是100個最新的。我可以限制我實際收到的人數。我在Google或者stackoverflow上找不到任何東西。有沒有人在這方面的問題或例子。任何快速幫助?通過Google App Engine上最新創建的接收實體

+0

您在使用SQL或谷歌App Engine的數據存儲? – dlebech

回答

1

你將要犯下DateProperty場具有指數= True和auto_now_add =真。然後,您可以使用提取限制對此字段進行降序排序。有可能有更多的方式,但這是我的嘗試和真實。

恕我直言 - 總是在每個重要的實體中包含這個date_created屬性是一個非常好的主意。您是否索引它取決於它的用途。正如Tomasz所指出的那樣,實體ID - 雖然通常是上升的 - 並不能保證如此。不要依賴他們。所以,如果你發現自己需要通過你的模型順序進展,你會很高興有你的「datec」字段。 (在每個記錄中總是包含一個「版本」IntegerProperty,這是一個很好的主意,當你需要通過現有實體讀/寫你的方式以確保最近的屬性改變被應用於所有記錄時,這證明是非常有用的。)鑑於這些潛在的益處,問問自己,這些成本是否會阻止你用這兩個屬性結束每個模型。 {注:索引是一個真正的成本,所以不設指數=從這些領域真正的,除非你打算使用它)

datec = ndb.DateTimeProperty(indexed=True, auto_now_add=True) 
v = ndb.IntegerProperty(indexed=False, default=1) 
+0

沒有辦法爲連續的順序行ID?另外我沒有定義數據庫?使用Google應用引擎,我擁有的是我的模型和端點類。這就是爲什麼我無法找到如何使用光標的示例 – NightSkyCode

+1

ID不是單調遞增的值。每個人都希望他們是,但他們不是。多年來,許多問題和線索花費在這方面。不幸的是,在瞭解這一點之前,您可以通過在開發和測試期間檢查ID來做出其他結論,因爲它們通常單調增加。 – stevep

1

您可以添加ORDER BY id DESCLIMIT到您的查詢

+0

這就是事情..我注意到我可以使用遊標來查詢,但是在我查找的每個示例中,數據庫都在應用程序中。使用谷歌應用程序引擎數據庫不在我的應用程序只是端點和模型類..所以我不知道如何查詢 – NightSkyCode

+1

我不認爲這是正確的,就[自動ID政策](https:/ /developers.google.com/appengine/docs/java/datastore/entities#Java_Assigning_identifiers)。數據存儲分配的實體ID不是連續的。 –

相關問題