我的实时数据库的结构如下:
test = {"100":271,"updated_at":{"date":"2017-10-14T12:15:52.172Z"},"created_at":{"date":"2017-10-14T12:15:52.172Z"}}
for key,value in test.items():
if (type(value)) == int:
test['xx_'+str(key)]=test.pop(key)
我想读取数据库,仅获取user0001发布的帖子,并按最新发布(按时间戳)对其进行排序。
目前,我只能像这样的某个用户获取帖子-
- Procedure001
- Post0001
- user_id: 00001
- timestamp: 1559214445
如何使用Firebase按时间戳排序?
答案 0 :(得分:0)
我最终获得了帖子并对其进行了过滤,所以我只使用Firebase来获得特定用户的帖子,然后使用新的Swift 5 sort()函数根据时间戳对它们进行排序-我在该线程上使用了swift 5答案Swift how to sort array of custom objects by property value
答案 1 :(得分:0)
我知道您发布了一个答案,虽然可以使用,但是有一些限制。
如果用户发布了一百万个帖子,尝试加载所有这些帖子并按代码排序可能会使该设备不知所措。即使节点数量较少,让Firebase进行排序和显示数据也比让您的应用程序完成所有操作要快得多。
因此,您常常会发现解决方案是根据要运行的查询类型来复制数据。在这种情况下,您有一个节点,用于存储每个帖子的用户ID和时间戳
Procedure
post_0
uid: uid_0
timestamp: 20190529
post 1
uid: uid_0
timestamps: 20190530
如前所述,您可以查询uid_0中的所有帖子,并按时间戳按代码排序。但是,请检查一下...
user_posts
uid_0
post_0: 20190529
post_1: 20190530
通过添加一个跟踪用户帖子的附加节点,可以消除查询,因为所有帖子都存储在一个地方,并且可以在服务器上轻松排序。
我将排除其他选项,复合值。
Procedure
post_0:
uid_timestamp: uid_0_20190529
post_1:
uid_timestamp: uid_0_20190530
使用此结构,您可以查询uid_timestamp排序的所有uid_0帖子。