Swift4 Firebase 数据库排序不起作用

Posted

技术标签:

【中文标题】Swift4 Firebase 数据库排序不起作用【英文标题】:Swift4 Firebase database sorting not working 【发布时间】:2020-03-31 11:23:33 【问题描述】:

解决方案:

我必须使用 snap.value。现在我尝试了“snap.children”,效果很好。在同一个查询中 snap.value 返回未排序的数据 snap.children 返回排序后的数据

self.referenceData = (Database.database().reference().child("imagelist" + "/" + userID!))
    self.referenceData.queryOrdered(byChild: "created").observeSingleEvent(of: .value, with:  (snap : DataSnapshot)  in
  print(snap.value) // Unsorted
  print(snap.children) // Sorted
    ...
)

问题

我正在尝试通过创建键对数据进行排序。但什么也没发生,也许我的代码有任何错误,

我的数据库视图

self.referenceData = (Database.database().reference().child("imagelist" + "/" + userID!))
    self.referenceData.queryOrdered(byChild: "created").observeSingleEvent(of: .value, with:  (snap : DataSnapshot)  in
    ...
)

【问题讨论】:

你得到了什么? 当我说排序不起作用时,这只意味着使用排序而不使用排序时相同的数据。另外,我曾写过“什么都没发生” “什么都没发生”非常模糊。这可能意味着你没有任何输出或其他东西。请尝试改进您的问题,解释您的期望和所见。另请参阅How to Ask。 当您的问题解决后,请遵守 Stack Overflow 的规则。将 SOLVED 放在标题中,或在您的问题中输入解决方案并不是在 Stack Overflow 上执行此操作的方法。如果您找到了与接受的答案不同的解决方案,请发布另一个答案并接受。如果接受的答案为您提供了所需的信息,但您想分享更多关于您的解决方案的信息,请对该答案发表评论,或对其进行编辑以添加信息。乍一看,您的解决方案似乎应该是对我的回答的评论。 【参考方案1】:

您很可能正在调用snap.value,它会返回字典中的子节点。字典中的条目根据定义是无序的。

要按照查询的顺序获取结果,您需要遍历snap.children

请在此处查看我的答案以获取示例:How to properly use queryOrderedByValue

【讨论】:

谢谢,它对我有帮助,我必须使用 snap.value。现在我尝试了“snap.children”,效果很好。在同一个查询中 snap.value 返回未排序的数据 snap.children 返回排序后的数据

以上是关于Swift4 Firebase 数据库排序不起作用的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序关闭时,Rest Api Firebase 通知在 Swift 4 中不起作用

具有索引合并 + orderby 的 Firebase 不起作用

Swift4 url​​Session Decodable 中的 POST 方法不起作用(这里出了啥问题?)

数据库在本机 Firebase 中不起作用

Firebase @PropertyName 不起作用

Firebase - Vue 数据库集成不起作用