gpt4 book ai didi

java - 根据 Google Datastore 的日期降序获取第 n 个 rownum

转载 作者:太空宇宙 更新时间:2023-11-04 07:33:53 24 4
gpt4 key购买 nike

嗨,我正在使用谷歌应用程序引擎创建一个图片托管网站,每个页面包含 5 张图像,我想得到一个 boolean 值,它会告诉我是否有后续页面(它们按日期降序存储)。我有页数限制和页码,因此我需要一个数据存储查询,该查询将:

获取 rownum pagenumber * pagelimit 的单个值(检查页面上显示的 5 之后是否存储了某些内容)。

目前我有:

    Query query = new Query("PicturePost").addSort("date",Query.SortDirection.DESCENDING);
List<Entity> results;

results = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(pageLimit)
.offset(pageLimit*(pageNumber)));

boolean lastPage = results.isEmpty();

但这效率很低,因为它会从下一页获取所有 5 个实体。

如果有人能帮助我,我将非常感激,谢谢!

最佳答案

这对我来说似乎很有效。 YMMV。我总是在任何需要串行访问的实体上包含一个 date_created 字段 [auto_now_add=True]。浏览器客户端应使用两个输入调用处理函数:要返回的图像数和日期限制。第一次调用的 date_limit 将为空字符串,因此您使用当前系统日期时间。其他调用将包括您在上一次调用中发回的最早日期。

您的查询将为 (date_created < date_limit) 和 date_created DESC。只获取所需图像数量的keys_only,然后将 key 发送回img src =“key_goes_here”设置。如果您返回的图像数量少于所需数量,或者为零,则您将没有新图像。

如果这是一个 Activity 页面,我一定会使用ndb进行自动内存缓存,并告诉浏览器将其缓存在您的内容标题中。 (如果使用 db,您可以非常轻松地编写一个简单的 memcache 函数。)是的,这并不完美:一小部分时间会导致浪费调用,因为您返回 N 个图像,并且不知道下一个调用将返回零。如果站点 super 活跃,您的图像 put() 上可能会有 date_created 的重复项。您需要承担自定义索引的开销,但我认为无论采用哪种方法,您都会承担这笔费用。与许多 GAE 事物一样,经常需要进行权衡。 HTH。 -史蒂夫普

关于java - 根据 Google Datastore 的日期降序获取第 n 个 rownum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17283965/

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