gpt4 book ai didi

ios - Firebase 从上一篇文章中获取数据

转载 作者:行者123 更新时间:2023-11-28 10:07:09 25 4
gpt4 key购买 nike

每次用户登录到应用程序时,private var currentKey: String! 都是 nil 所以这会被调用:

databaseRef.child("OMG_Pictures").queryOrdered(byChild: "timeStamp").queryLimited(toLast: 5)

它总是拉旧帖子。我怎样才能保存当前 key ,这样用户就不必每次都看到相同的帖子,而是从他们离开的地方继续,数据库只获取新帖子? (类似于社交媒体应用程序所做的)

最佳答案

您希望向后分页,这要求您(在本例中)调用 queryEnding(atValue: ...)。通过将此添加到您的查询,您可以使其“跳过”您已经看到的项目,实质上是通过结果向后翻页。

假设您当前的查询返回具有这些时间戳的项目:

 96
97
98
99
100

要使用 queryEnding(atValue: ...),您需要知道您已经看到的最旧项目的时间戳值,在本例中为 96。您将其传递到下一个查询:

databaseRef
.child("OMG_Pictures")
.queryOrdered(byChild: "timeStamp")
.queryEnding(atValue: 96)
.queryLimited(toLast: 6)

现在你得到:

 91
92
93
94
95
96

您会注意到我们现在得到 6 件元素。这是必需的,因为这个新查询结果中的最后一项是我们之前已经得到的。所以我们需要检索一个额外的项目,并用客户端代码删除重叠的项目。

另请注意,相同的时间戳值可能会在您的消息中出现多次。在这种情况下,您需要时间戳 的值和 您见过的最旧项目的键,并将两者传递给 queryEnding(atValue: ..., childKey: ... )

关于ios - Firebase 从上一篇文章中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52028381/

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