首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Google Datastore获取基于日期降序的第n行

问使用Google Datastore获取基于日期降序的第n行
EN

Stack Overflow用户
提问于 2013-06-25 03:56:11
回答 1查看 111关注 0票数 1

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

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

目前我有:

代码语言:javascript
复制
    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个实体。

如果有人能帮助我,我将不胜感激,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-25 09:49:55

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

您的查询将是(date_created < date_limit)和date_created DESC。对所需图像的数量执行keys_only获取,并将密钥发送回img src="key_goes_here“设置。如果返回的图像数量少于所需数量或为零,则表示新图像已用完。

如果这是一个活动页面,我将确保使用ndb进行自动memcaching,并告诉浏览器将其缓存到您的内容标头中。(如果使用db,您可以很容易地编写一个简单的memcache函数。)是的,这并不完美:因为返回N个图像,而不知道下一次调用将返回零,所以有一小部分时间会导致调用浪费。如果站点非常活跃,您可能会在映像put()上复制一个date_created。你有一个自定义索引的开销,但我认为无论采用哪种方法,你都会产生这种开销。与许多GAE一样,通常需要权衡取舍。HTH。-stevep

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17283965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档