firebase orderByChild 仅返回一个孩子的奇怪订单

2023-12-05

我有一个 firebase 架构,其中包含带有一些值的“Catalog”表

目录表

enter image description here

我使用 avgDrinkPrice 作为订单执行了 orderByChild() ,但输出错误。

Output

enter image description here

Code

myRef.orderByChild("avgDrinkPrice").addValueEventListener(new ValueEventListener() {
  @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            catalogList.clear();
            for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
                Catalog catalog = postSnapshot.getValue(Catalog.class);
                catalogList.add(catalog);
                Log.d(TAG,"Drink price " + catalog.getAvgDrinkPrice());
                catalogSize++;
            }
            //LOOP ENDS.

我尝试过使用其他数值(例如纬度字段、经度和评级)进行排序,它们的顺序是正确的。只有按avgDrinkPrice排序时才会出现顺序错误。我不明白为什么。请帮忙。


根据你的截图,avgDrinkPrice财产是一个string,所以结果are排序正确。只是它们是按字典顺序排序的,而不是按数字排序。

有关 Firebase 在按子排序时如何对数据进行排序的更多信息,here:

使用时orderByChild(),包含指定子键的数据将按如下顺序排序:

  1. 儿童有null指定子键的值排在第一位。
  2. 具有以下价值的儿童false接下来是指定的子键。如果多个孩子的值为false,它们按字典顺序按键排序。
  3. 接下来是指定子键值为 true 的子项。如果多个孩子的值为true,它们按字典顺序按键排序。
  4. 接下来是具有数值的子项,按升序排序。如果多个子节点对于指定的 > 子节点具有相同的数值,则它们按键排序。
  5. 字符串位于数字之后,并按字典顺序升序排列。如果指定子节点的多个子节点具有相同的值,则它们按键按字典顺序排序。
  6. 对象排在最后,并按字典顺序按键升序排序。

要让孩子们按数字排序,您必须存储avgDrinkPrice作为一个数字。和lati, longti and rating也可能更好地存储为数字。

使用您的订单lati, longti and rating属性可能看起来是数字,但那是因为被排序的字符串值可能具有相同的位数 - 但情况并非如此avgDrinkPrice.

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

firebase orderByChild 仅返回一个孩子的奇怪订单 的相关文章

随机推荐

  • Redis 中的 Azure 缓存/DataCache 样式区域

    我正在计划将 C ASP Net Web 应用程序迁移到 Azure 当前托管在单个专用服务器上 并且正在考虑缓存选项 目前 由于我们一次只运行一个应用程序实例 因此我们有一个 进程内 内存缓存来缓解 SQL DB 的一些相同请求 目前的过
  • 在 Outlook 中设置特定文本的格式

    我需要格式化从 Outlook 中的 Excel 获取的特定字符串值 一旦 Excel 提供了该值 宏就会将该值附加到电子邮件中 我尝试测试并将值设置为粗体 但消息的所有内容都变成粗体 如何设置值的格式 以便我可以根据自己的喜好使用字体类型
  • 删除评论 - React js

    实际上 我一直在尝试向我的评论框系统添加 删除评论 功能 这是我的代码 var Comment React createClass handleClick function e e preventDefault var commentId
  • 部署到 Program Files 目录

    我开发了一个 C 应用程序 我想将其部署到C Program Files Company Name Product文件夹 我没有看到目标计算机上创建的 公司名称 文件夹 我将文件从 已发布 目录复制到记忆棒 拇指驱动器 上 我将记忆棒带到
  • 未按预期收到段错误

    我正在学习如何在 C 中使用指针和结构 当然 我会尝试故意破坏我的代码以进一步了解该语言的工作原理 这是一些按我预期工作的测试代码 include
  • 如何防止按 Enter 键时文本从文本区域中删除?

    当我在粉红色文本框中写入新文本并按enter新文本将在该框中更新 但是 如果我只是单击粉色文本框内部并且不进行任何更改 然后按enter 然后站在那里的文本被删除 它不应该被删除 如果我不做任何更改 那么已经存在的文本应该继续存在 func
  • getElementsByClassName() 具有两个类

    是否可以获取所有具有类的元素a or b using getElementsByClassName 只有一次 我更喜欢普通的 JavaScript 你不能这样做getElementsByClassName 方法改为使用querySelect
  • API安全:如何通过域限制访问?

    我公开了一个简单的 API 需要确保只有授权用户才能访问它 我将提供一个 API 密钥来进行身份验证 但是 我还想将 API 密钥关联到某个域 这意味着 只有在从授权域使用它时它才应该起作用 如何检查 API 端是否是从授权域访问的 HTT
  • 用两个图例更改 ggplot 中的两个图例标题

    我的 ggplot 上有两个图例 有两个不同的图例标题 自动创建自ggplot 现在 我想更改这个图例标题 labs colour legend name 仅更改第二个图例标题 我怎样才能改变第一个呢 样本数据 dataset lt str
  • 用c写一个push和pop

    原始问题 我正在尝试用 C 语言为一个项目创建这个计算器 我让数学函数正常工作 但我不知道如何处理推入和弹出 有人可以帮助我开始吗 我知道java中的push和pop应该做什么 但我不确定如何在不使用节点或数组的情况下使用它们 我的包含和堆
  • Windows 上使用 python 自动 NTLM

    如何在 Windows 上使用 python 的自动 NTLM 身份验证 我希望能够从 Windows 访问 TFS REST API 而无需对密码进行硬编码 就像从 Web 浏览器 例如 firefox 的 network automat
  • 如何在 VB.NET 中编写事件处理程序?

    我正在尝试在 VB NET 中测试非常简单的事件处理 到目前为止我有 Public Delegate Sub TestEventDelegate Public Event TestEvent As TestEventDelegate Sub
  • postgresql 9.3 中是否有任何技术可以使其开始返回 1 和 0 而不是布尔类型的“t”和“f”

    实际上 我正在将我的 ms sql 服务器迁移到 postgresql 9 3 并且我们使用 int 数据类型来存储布尔值的 1 和 0 但在 postgresql9 3 中这是不可能的 当我对 postgresql 的数据类型进行一些研究
  • 如何使用服务帐户获取域用户的数据?

    我正在开发一个企业应用程序 在其中使用 People API Directory APi 但是 我始终需要从特定用户进行自动检查 因为我无法使用服务帐户接收数据 如何使用服务帐户获取域用户的数据 我使用这段代码来连接谷歌API public
  • 如何使用 Http 客户端(带有可选更改)将 Symfony 请求转发到另一台服务器?

    如何拦截请求并发送HttpClient到另一台服务器并在进行一些修改后返回该服务器的响应 原始请求将包含数据和文件 我正在寻找最简单的解决方案 直到将原始原始正文复制为字符串 我遇到的问题是插入Request反对HttpClient要求以最
  • 如何用 C 语言向子进程传递输入并检索输出

    我在 Windows 中有一个 exe 程序 它在终端中的工作原理如下 gt program exe parameter01 file entry01 user types entry01 output01 entry02 user typ
  • 当将链表的头传递给函数时。为什么我们需要通过引用的引用来传递它,例如在push(node* &head, int key)中

    打印出head和 head的地址 头 0x603050 head 0x7fffffffe4b8 这意味着什么 void push node head int key Inserts items at front of link list n
  • angularjs计算对象长度

    我使用下划线来计算对象长度 size object 因为这个对象是由 angularjs 处理的 所以有一个 hashKey对象中的属性使长度 1 比应有的大 在 AngularJS 中计算对象长度的正确方法是什么 这行吗 size omi
  • 将元数据添加到不在 CMS 中的 Drupal 页面?

    我是 Drupal 的新手 我必须在另一个开发人员编码的网站上工作 我们找到并安装了 Metatag 模块 以便我们能够访问 CMS 内内容的元数据更改 这对于大多数事情来说都很棒 但是有一些类型的内容 不确定这里确切的 Drupal 术语
  • firebase orderByChild 仅返回一个孩子的奇怪订单

    我有一个 firebase 架构 其中包含带有一些值的 Catalog 表 目录表 我使用 avgDrinkPrice 作为订单执行了 orderByChild 但输出错误 Output Code myRef orderByChild av