Firebase queryOrderedByChild() 方法不提供排序数据

2024-04-16

我的数据库结构是这样的:

{
  "users": {
    "alovelace": {
      "name": "Ada Lovelace",
      "score": 4,
    },
    "ghopper": { ... },
    "eclarke": { ... }
  }
}

我正在尝试按降序检索前 20 个分数。

let queryRef = FIRDatabase.database().reference().child("users").queryOrderedByChild("score").queryLimitedToLast(20)
queryRef.observeSingleEventOfType(.Value, withBlock: { (querySnapShot) in
      print(querySnapShot.value)
})

我想得到类似的输出

score": 4
score": 3
score": 2

or 

score": 2
score": 3
score": 4

or 

2
3
4

请让我知道如何解决这个问题。


当您按特定顺序请求子项时,生成的快照将包含与查询匹配的数据以及有关您请求它们的顺序的信息。

但是当你请求.value快照的键+数据被转换为Dictionary<String,AnyObject>。由于字典没有额外的位置来放置有关订单的信息,因此在转换为字典时该信息会丢失。

解决方案是不要过早转换为字典,而是循环快照:

queryRef.observeSingleEventOfType(.Value, withBlock: { (querySnapShot) in
    for childSnapshot in querySnapShot.children {
        print(childSnapshot.value)
    }
})

您还可以收听.ChildAdded事件,而不是.Value,在这种情况下,孩子们将得到正确的值:

queryRef.observeSingleEventOfType(.ChildAdded, withBlock: { (childSnapshot) in
    print(childSnapshot.value)
})

Update

我刚刚将此 JSON 添加到我的数据库中:

{
  "users" : {
    "alovelace" : {
      "name" : "Ada Lovelace",
      "score" : 4
    },
    "eclarke" : {
      "name" : "Emily Clarke",
      "score" : 5
    },
    "ghopper" : {
      "name" : "Grace Hopper",
      "score" : 2
    }
  }
}

然后运行这段代码:

let queryRef = ref.child("users").queryOrderedByChild("score").queryLimitedToLast(20);
queryRef.observeEventType(.ChildAdded) { (snapshot) in
    print(snapshot.key)
}

输出是:

ghopper

爱乐花边

eclarke

这是按分数升序排列的用户。

更新以添加更多有关按降序排列分数的信息

上面的代码按升序获取 20 个最高分。没有 API 调用可以按降序分数返回它们。

但是在客户端反转 20 项并不存在性能问题,您只需要为其编写代码即可。参见示例这个答案 https://stackoverflow.com/questions/36314374/swift-how-to-create-sort-query-as-descending-on-firebase.

如果您确实坚持在客户端反转它们,则可以添加反转分数。看这个答案 https://stackoverflow.com/questions/36589452/in-firebase-how-can-i-query-the-most-recent-10-child-nodes/36665442#36665442举个例子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firebase queryOrderedByChild() 方法不提供排序数据 的相关文章

  • Firebase 部署无法找到 firebase.json

    所以 我是编程新手 仍在学习一些东西 顺便说一句 我使用 Windows 我尝试制作一个应用程序 将其连接到 firebase 设置完所有内容后 就可以设置 CLI 好消息 我成功设置了从节点到 nvm 的所有内容 直到在 CLI 中成功启
  • UITableView 快速获取 titleForHeadersInSection

    我想在 UITableView 的部分中设置标题的标题 语法是什么swift设置该部分中标题的标题 func tableView tableView UITableView titleForHeaderInSection section I
  • 如何解决malloc_error_break?

    我在 iOS 3 0 模拟器上遇到此错误 但在 3 1 3 和 3 2 模拟器上没有遇到此错误 创建符号断点后malloc error break 我在日志中看到了这一点 Session started at 2010 02 13 19 1
  • 在 iOS 中使用 FB SDK 是否需要 Facebook 的成功审核?

    现在我需要使用Facebook SDK来自我的 iOS 应用程序中的 Facebook 所以我填写了有关我的应用程序的信息developer facebook com应用程序详细信息 但是 当我用我的设备测试我的应用程序时 我可以发布到 F
  • Android 上的 Firebase:如何检查 Firebase 身份验证失败原因?

    我在 Android 上使用 Firebase 和 Firebase Auth 功能 I try FirebaseAuth signInWithEmailAndPassword如果失败 我想知道为什么登录过程失败 The signInWit
  • 为什么 UITableViewCell 不可访问(对于 VoiceOver)

    我并不是想解决任何问题 当然你可以设置isAccessibilityEnabled true它有效 我的问题是 为什么它默认关闭并且界面生成器中没有适当的部分 在我看来 不建议使 UITableViewCell 子类可访问 有没有更好的方法
  • iOS:滚动视图仅在键盘出现后才起作用

    我制作了滚动视图 其中有很多文本字段 我添加了更新的 TPKeyBoardAvoidingScrollView 并将其添加到滚动视图的文件所有者中 我在 h 文件中添加了插座 在 m 文件中综合并添加了行 self view addSubv
  • 如何向 UIView 添加大小调整手柄?

    我试图根据用户请求在运行时动态创建视图 UIImageView 和 UITextView 然后允许用户移动它们并调整它们的大小 除了调整大小之外 我的一切都工作得很好 我尝试使用捏合手势识别器 但发现它对于我想要的东西来说太笨拙了 因此 我
  • 如何重新定位或移动 Google Maps SDK 上的当前位置按钮?

    如何将 Objective C 中的当前位置按钮移至我的偏好 现在 我已启用它 但底角有东西挡住了它 Thanks 您可以使用 padding 将按钮向上移动 self mapView padding UIEdgeInsets top 0
  • 调用 SwiftUI 中位置 #11、#12 处的额外参数 [重复]

    这个问题在这里已经有答案了 我在 SwiftUI 中的切换开关上不断收到 调用中位置 11 12 处有额外参数 错误 我见过其他人有 调用中的额外参数 错误 但答案似乎没有帮助 另外 我的错误是 位置 11 12 我还没有看到其他人发生这种
  • 查找已用应用程序名称的捆绑包/开发人员

    我正在尝试将应用程序上传到应用程序商店并收到以下错误 很容易理解 The App Name you have entered has already been used 该应用程序不在 iTunes 上 有什么方法可以找出谁拥有该应用程序或
  • 在 swift 中将简单字符串转换为 JSON 字符串

    我知道有一个同标题的问题here https stackoverflow com questions 30825755 convert string to json string in swift 但在那个问题中 他试图将字典转换为 JSO
  • Xcode 10 Beta 5 — clang:错误:链接器命令失败,退出代码为 1

    有人可以帮我吗 我的项目一切正常 但更新到 Xcode10 Beta5 后 尝试在 iPhone 上运行该应用程序时出现此错误 然而模拟器可以工作 请帮助我 我已经对这个问题进行了网络搜索并发现this https stackoverflo
  • 在视图之间传递核心数据实体变量

    我无法理解如何在视图之间使用核心数据实体变量 为了更好地理解我的问题是什么 我的代码如下 View A 基本上 您必须将完整预算实体或相关预算实体的 ID 从视图 A 传递到视图 B 由于不知道您的应用程序的视图层次结构和逻辑 我假设您选择
  • XCode 4.5 给我“SenTestingKit/SenTestKit.h”文件未找到,但适用于 4.4.1

    我刚刚安装了 XCode 4 5 它在我现有的项目之一上给了我一个 SenTestingKit SenTestingKit h 文件未找到错误 此错误仅发生在 XCode 4 5 中 但它在 4 4 1 上编译正常 我已经检查过SenTes
  • NSCFData fastCharacterContents 崩溃? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我目前在控制台中收到此崩溃日志 20
  • ios - 在哪里放置 s.static_framework = true

    我在 CocoaPods 中的级别为 0 当我使用pod install有一个错误说 The Pods App target has transitive dependencies that include static framework
  • 企业发行版在 Swift 应用程序中与 iOS8 配合不佳

    我在使用 swift 应用程序在 iOS 8 设备上运行 Enterprise 版本时遇到问题 如果我使用非企业帐户进行代码签名 它似乎工作正常 有人遇到这个问题吗 以下是我在尝试使用企业帐户运行构建以进行协同设计时在 iOS 设备上收到的
  • ios - Gamekit 的 GKOctree 未找到元素

    我正在尝试使用GKOctree https developer apple com documentation gameplaykit gkoctree用于高效检索 3D 空间中的对象 然而 以下代码似乎没有按预期工作 import Gam
  • 在 HTML5 iOS 7 / iOS 8 中显示十进制键盘

    经过几个小时的搜索后 我只是有一个简单的问题 是否有可能在网络浏览器输入字段中显示小数键盘 input type number 只显示数字 但我需要在左下角使用逗号或点 我尝试过任何事情 pattern step等等 但没有显示十进制键盘

随机推荐

  • 在python中解压嵌套的zip文件

    我正在寻找一种在 python 中解压缩嵌套 zip 文件的方法 例如 考虑以下结构 为方便起见 使用假设名称 Folder ZipfileA zip 压缩文件A1 zip 压缩文件A2 zip ZipfileB zip 压缩文件B1 zi
  • 在 C 中将整数转换为二进制

    我正在尝试将整数 10 转换为二进制数 1010 此代码尝试执行此操作 但我在 strcat 上遇到段错误 int int to bin int k char bin bin char malloc sizeof char while k
  • 为多面图中的单个面板添加几何图层

    从以下链接中获取提示使用 ggplot2 对齐两个图 http rwiki sciviews org doku php id tips graphics ggplot2 aligntwoplots 我能够根据共同的 x 轴绘制 2 个 y
  • 流明:启用 CORS

    我使用 Lumen 构建了一个 API 并希望使用 JavaScript 和 XMLHttpRequest 对象访问它 但每次我的 PUT GET POST 和 DELETE 请求都会转化为选项 请求 我看了很多网站都有CORS的信息 我构
  • 点击按钮后 Python Tkinter 销毁标签

    我有一个在单击按钮后出现的标签 但是每次单击按钮后 前一个标签仍保留在其位置并创建一个新标签 我希望将新标签代替旧标签 代码如下 browser webdriver PhantomJS browser get http www ipvoid
  • iPhone硬计算和缓存

    我有问题 我有数据库500k记录 每个记录存储纬度 经度 动物种类 观察日期 我必须在 Mapkit 视图上方绘制网格 15x10 以显示该网格单元中物质的浓度 每个单元格都是 32x32 的盒子 如果我在运行时计算它是非常slow 有人知
  • Cocoa:如何将布尔属性绑定到 NSCellStateValue?

    我想绑定布尔值enabled的财产NSTextField到一个状态NSButton 我已经尝试添加自定义NSValueTransformer从而改变了状态NSButton into NSNumber 但是 在这种情况下 由于某种原因 文本字
  • 有没有办法通过命令行将 JVM 参数传递给 Maven? [复制]

    这个问题在这里已经有答案了 可能的重复 Maven Jetty 插件 如何控制 VM 参数 https stackoverflow com questions 2007192 maven jetty plugin how to contro
  • 如何在 Java 中对 HTTP 请求中的西里尔字母进行编码?

    美好时光 我的 Adroid 应用程序向 Google 的 API 服务之一执行 HTTP 请求 当然 当请求的参数是英文时 它可以工作 但是当我用西里尔文测试我的函数时 我收到 400 错误 似乎问题是将 Win 1251 字符串编码为
  • 将数据从 Azure HUB-IOT 保存到 Azure SQL 数据库

    我最近创建了一个 Azure Hub IOT 其中我从虚拟设备发送一些数据 我知道数据已到达 因为我可以从终端看到它们 但现在我想获取这些数据并将它们保存到 Azure SQL DataBase 中 我怎样才能做到这一点 如果有人可以向我解
  • 如何 git Blame 目录

    我想知道如何使用 gitblame 来知道谁创建了单个目录 当我尝试时 git blame DIRECTORY NAME I get fatal no such path DIRECTORY NAME in HEAD 顺便说一句 该目录是空
  • 向 Windows 窗体消息循环发送或发布消息

    我有一个线程从命名管道读取消息 它是阻塞读取 这就是它在自己的线程中的原因 当该线程读取消息时 我希望它通知主线程中运行的 Windows 窗体消息循环消息已准备就绪 我怎样才能做到这一点 在win32中我会做一个PostMessage 但
  • 无法加密特殊字符:不是块长度的倍数

    我有一个加密 解密算法 我试图加密一些特殊字符从android发送到服务器 但它抛出一个异常 java lang Exception 加密 错误 0607F08A 数字信封例程 EVP EncryptFinal ex 数据不是块长度的倍数
  • 如何从 UnsafeMutableRawPointer 中获取字节?

    如何访问由 C API Core Audio 等 传递给 Swift 函数的 UnsafeMutableRawPointer Swift 3 中的新功能 指向的内存之外的字节 或 Int16 浮点数等 load
  • R代码:如何根据其他变量的多个条件生成变量

    我有一个 R 初学者用户 这是我的数据集 factor1 lt c 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 factor2 lt c 1 2 3 4 5 6 7 8 9 10 11 12 13 1
  • 需要帮助设置一个界面,其中大多数元素的旋转都是固定的,但警报和共享框会随设备自动旋转

    我正在使用 Xcode 7 和 Swift 2 我正在开发一个带有相机预览层和控件的界面 其显示方式类似于本机 iOS 相机应用程序 当您转动设备时 所有控件都保持在原位 但图标会 旋转 到位以根据设备方向正确定位 我希望我以一种有意义的方
  • 使用 Maven 执行器跳过模块

    我在用着enforcer我在根 pom 的多节点项目中添加了一个插件 但我有一个测试模块 我并不关心在那里运行该插件 因为它不会创建任何 jar 并且仅用于测试目的 有没有办法跳过插件配置中的模块之一 检查文档我找不到任何东西 只是如何禁止
  • 对于 Android Nexus 5,调用 getBluetoothService() 时无需使用 BluetoothManagerCallback

    我将实现一个模块 用于通过蓝牙从 Android 智能手机向 HC 06 发送命令 当执行时 出现以下异常 并且找不到标题所示的错误消息的线索 请问修改方法可以吗 异常日志消息 07 29 13 51 37 701 W BluetoothA
  • 如何导航到页面的某个部分

    我有一个带有链接的登陆页面 如何将用户引导至不同页面的某个部分 主页 a href sample Sushi a a href sample BBQ a 示例页面 div div div div 单击主页中的 寿司 或 烧烤 应将用户导航到
  • Firebase queryOrderedByChild() 方法不提供排序数据

    我的数据库结构是这样的 users alovelace name Ada Lovelace score 4 ghopper eclarke 我正在尝试按降序检索前 20 个分数 let queryRef FIRDatabase databa