我正在使用Google App Engine(GAE),Datastore(使用JDO)并使用Java进行操作。GAE数据存储 - 如何随时获取最新/最新结果并继续您离开的地方?
我想以下情况发生:
比方说,我有以下模式:卡,它只有一个字段,它是创建的时候(我称之为“TOC”)。
我希望在进行GET请求时始终检索3个最新的卡实体。假设我目前在数据存储区中有5个名为C1,C2 ... C5的卡实体。它们按顺序插入,这意味着C5是最新的实体。
我现在做我的GET请求,并因此得到实体:C5,C4和C3。在客户端使用这些实体后,5分钟后再说。我想检索下3个最新的实体。但在这5分钟内,2个新卡已添加到数据存储中,现在看起来如下:C1,C2,C3,C4,C5,C6,C7。
我现在想要实际检索C7,C6和最新但尚未检索到的卡片,这意味着我也想要C2。即我想要C7,C6和C2。
我一直在试验游标,似乎无法得到这种行为。目前,我正在使用一种查询来对卡片进行升序排序,这意味着我将首先获取最早的卡片,然后当我完成所有卡片时,光标实际上可以检测何时添加新条目并检索它们。但是如果自从上次查询以来已经增加了3个以上,它仍然会取前3个(而不是后3个),这意味着我将获得最新的3张牌中最老的牌。是否有任何方法可以在没有真正达到最终结果的情况下获得“最终游标”?如果有的话,我可能会接受3张最古老的最新卡片。
现实生活中的应用:想象一下9GAG的新鲜类别:最新的条目总是在最前面(简单)。但在我的应用程序中,以前的很可能永远不会再被看到,这意味着我想避免重复。所以它应该优先考虑最新的条目,并且当没有“新”卡时,它将继续在你最后一次离开的地方。
对不起,文字的墙!并感谢您的任何反馈! :)
谢谢您的输入!我会看看能否用这种方法来解决我的问题。甚至没有考虑使用时间戳作为结果的限制。我会回来并发布我的结果! – Whyser