【问题标题】:Efficient way to query高效的查询方式
【发布时间】:2014-03-11 08:13:44
【问题描述】:

我的应用有一个类可以保存用户上传的图片。类中的每个对象都有一个 city 属性,其中包含拍摄照片所在城市的名称,以及一个 like 属性,用于跟踪喜欢的次数。

我希望能够发送一个查询,每个城市返回一张图片,并且每张图片都应该在它所属的城市中拥有最高的点赞排名。我怎样才能做到这一点?

我首先想到的一种方法是通过获取最喜欢的城市图片并将其保存在数组中来执行多个查询,然后对其他城市执行相同操作。 但是,每个国家都有不止一个城市,因此效率不高。

Parse 不支持数据库中使用的普通操作。此外,我尝试使用复合查询。不幸的是,我无法对子查询设置限制或排序。有什么好的解决方案吗?

【问题讨论】:

  • 你知道你可以将子查询用作解析中的普通查询吗?

标签: parse-platform pfquery


【解决方案1】:

使用 group by 会很容易。不幸的是,Parse 不支持“选择不同”或“分组依据”功能。

正如您所建议的,您需要获取每个国家/地区的所有城市,并为每个城市获取评分最高的照片。

但是,由于 Parse 对请求的执行持续时间有严格限制(事件侦听器为 3 秒,自定义函数为 7 秒),我建议您在后台作业中执行此操作,并保存在新表中每个城市评分最高的照片。通过这种方式,您可以轻松地从客户端查询数据库。后台作业可以在解析删除它们之前执行长达 15 分钟,因此您可以在没有超时的情况下进行此类查询。

希望对你有帮助

【讨论】:

  • 谢谢,我会调查的!顺便说一句,这可以使用云代码和 javascript 承诺吗?如果是的话,你知道任何关于承诺的教程或例子吗?谢谢
  • 是的,串联使用 Promise。请参阅parse.com/docs/js_guide#promises,您应该对国家进行查询以获取所有城市(第一次查询),因此获取所有城市并序列化所有查询以获得城市的最高照片,因此您将添加每张最高照片生成的行到一个临时数组,最后您将使用每个城市最顶部的照片更新汇总表。从上面的链接中查看系列中的 Promise,应该对您有所帮助
猜你喜欢
  • 1970-01-01
  • 2021-01-06
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
  • 2013-11-06
  • 2022-01-04
  • 2011-09-03
  • 2021-01-22
相关资源
最近更新 更多