首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >firebase Swift中的查询排序

问firebase Swift中的查询排序
EN

Stack Overflow用户
提问于 2019-05-30 19:46:54
回答 2查看 225关注 0票数 0

我的实时数据库结构如下:

代码语言:javascript
复制
   - Procedure001
        - Post0001
            - user_id: 00001
            - timestamp: 1559214445

我想读取数据库,只获得user0001发布的帖子,并按最近的帖子排序(按时间戳)。

目前,我只能得到某个用户的帖子,就像这样-

代码语言:javascript
复制
let ref = Database.database().reference().child("Procedure001").queryOrdered(byChild: "user_id").queryEqual(toValue: "0001")

如何使用firebase对时间戳进行排序?

EN

回答 2

Stack Overflow用户

发布于 2019-05-30 20:57:52

我最终得到了帖子,并对它们进行了过滤,所以我只使用firebase获得特定用户的帖子,然后使用新的Swift 5 sort()函数根据时间戳对它们进行排序-我在这个线程Swift how to sort array of custom objects by property value上使用了swift 5 answer

票数 0
EN

Stack Overflow用户

发布于 2019-05-31 06:26:23

我知道你发布了一个答案,虽然它可以工作,但有一些限制。

如果用户发布了一百万条帖子,试图加载所有这些帖子并在代码中进行排序可能会使设备不堪重负。即使节点数量较少,让Firebase对数据进行排序并呈现数据也比让应用程序处理所有数据要快得多。

因此,您经常会发现解决方案是根据要运行的查询类型复制数据。在本例中,您有一个节点来存储每个帖子的用户id和时间戳

代码语言:javascript
复制
Procedure
   post_0
      uid: uid_0
      timestamp: 20190529
   post 1
      uid: uid_0
      timestamps: 20190530

正如您所提到的,您可以在代码中查询uid_0中的所有帖子并按时间戳排序。但是,看看这个。

代码语言:javascript
复制
user_posts
   uid_0
      post_0: 20190529
      post_1: 20190530

通过添加跟踪用户帖子的附加节点,可以消除查询,因为所有帖子都存储在一个位置,并且可以在服务器上轻松排序。

我将抛出另一个选项,即复合值。

代码语言:javascript
复制
Procedure
   post_0:
      uid_timestamp: uid_0_20190529
   post_1:
      uid_timestamp: uid_0_20190530

使用此结构,您可以查询所有uid_0的帖子,按uid_timestamp排序。

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

https://stackoverflow.com/questions/56377720

复制
相关文章

相似问题

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