如何在android firestore中根据不同的if条件实现多个order by?

2023-12-19

Android中如何实现多个order byFirestore基于不同的if条件?

我想根据不同的字段值对我的 firestore 项目进行排序 像这样:

Query query= firestoredb.collection('items').document(docid).orderby('price').orderby('itemcategory').orderby('name**');

但有多少orderby将添加的是dynamic。它将在运行时决定,即用户将从排序选项中选择什么。

那么我该如何让我的Firestore在android中查询?

请帮我。


类似于您在代码中使用的查询:

Query query= firestoredb.collection('items').document(docid).orderby('price').orderby('itemcategory').orderby('name');

在 Cloud Firestore 中不可能,因为firestoredb.collection('items').document(docid)返回一个文档参考 https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/DocumentReference对象并且你不能调用orderBy()方法就可以了。因此,假设您想使用查询,请使用以下代码行:

Query query= firestoredb.collection('items').orderby('price').orderby('itemcategory').orderby('name');

会工作得很好。 Firestore中按多个字段排序没有问题。您甚至可以将传递方向设置为第二个参数:Direction.ASCENDING or Direction.DESCENDING.

Edit:

根据您的评论,您应该创建一个 if 语句,甚至更好,一个 switch 语句,并根据用户选择的内容来创建new查询对象。因此,如果用户仅选择价格,则查询应如下所示:firestoredb.collection('items').orderby('price'), 就是这样。请参阅下面的示例:

Query query;
switch (option) {
    case "price":
        query = firestoredb.collection('items').orderby('price');
        break;
    case "itemcategory":
        query = firestoredb.collection('items').orderby('itemcategory');
        break;
    case "price_itemcategory":
        query = firestoredb.collection('items').orderby('price').orderby('itemcategory');
        break;
    case "name":
        query = firestoredb.collection('items').orderby('name');
        break;
    case "price_name":
        query = firestoredb.collection('items').orderby('price').orderby('name');
        break;
    default:
        query = firestoredb.collection('items'); //No ordering
        break;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在android firestore中根据不同的if条件实现多个order by? 的相关文章

随机推荐

  • 在主干中获取 /collection/id 而不加载整个集合

    有没有办法加载 Backbone 集合的单个实体 从服务器 Backbone Collection extend url rest product 下面的代码可以加载整个集合collection fetch 但如何加载单个模型呢 Backb
  • 当前线程方法java

    所以我正在尝试为我正在制作的游戏使用线程 我是very刚接触这个主题 所以我可能理解不正确 我的问题是 currentThread 方法在 java API 的 Thread 类中如何工作 API 说 返回对当前正在执行的线程对象的引用 但
  • T-SQL 算术溢出:哪一列?

    在MS SQL Server 2005中 当在INSERT期间遇到 将数字转换为数字类型的算术溢出错误 时 是否可以发现哪一列的输入值导致了错误 似乎有许多类似的转换错误 但没有报告哪一列引发了问题 这使得在大型查询中修复错误变得相当困难
  • IMPORTDATA 出现很多错误,因为我正在尝试加载许多单元格以获取股票报价

    我有一张包含 220 个 导入数据 功能的 Google 表格 其中每个功能都从网站上提取股票报价 功能很简单 importdata http
  • 在设置大量计时器或使用计划任务队列之间寻找解决方案

    我正在构建一项服务 游戏 其中一组用户将在一个房间中 它将在一定的持续时间 例如 30 秒 内通过每个用户做出选择 如果用户在该持续时间内没有做出选择 服务将自动为该用户生成一个选择 如果在持续时间结束之前做出选择 那么下一个用户就起来了
  • 如何阅读 VS Code 中的发行说明

    我今天重新启动了 VS Code 它已更新 当它再次打开时 我看到一个带有发行说明的选项卡 几分钟后决定打开我的项目以查看操作中的更改 然而 当我打开该项目时 发行说明选项卡已关闭 现在我找不到在 VS Code 中专门访问它的方法 有没有
  • 如何在delphi中一次将不同字体格式的文本绘制到画布上?

    我一直在使用DrawText满足我所有的 矩形文本 输出需求 但是我没有找到一种绘制字符串的方法 例如 将每个其他单词加粗或使用不同的颜色 或者更糟糕的是 为所述随机选择的单词使用不同的背景 据我所知 可能没有一个程序可以做到这一点 我可能
  • Android Spring Jackson 映射:NoClassDefFoundError

    我试图让我的 Android 应用程序作为 REST 客户端运行 基本上我遵循了这个例子 https github com SpringSource spring android samples tree master spring and
  • 使用概念是否允许在成员函数上使用 decltype

    我来到know https stackoverflow com a 74024419一个班级的X具有名为的成员函数func c 标准不允许我们写decltype X func 因此我预计下面给出的程序会产生一个错误 类似于invalid u
  • 如何在 mac 中使用 Exiftool 添加 GPS 纬度和经度(如何在 jpeg 中编辑元数据)

    我有一堆从 FLIR 相机获得的 jpeg 图像 除了这些图像之外 我还收集了 GPS 坐标 现在我正在尝试将 GPS 纬度和经度获取到图像的元数据中 我用 R 编程语言编写了一个程序 用于查找每个图像相对于时间的 GPS 位置 只要 GP
  • 像 jQuery 插件一样使用 GWT 小部件?

    我可以像 jQuery 插件一样使用 Google GWT 小部件吗 例如 Gwt a css selector mywidget some prefs 也许你正在寻找类似的东西GQuery http code google com p g
  • OpenCV 轮廓矩?

    什么是轮廓矩 有人可以用简单的非数学术语解释这一点吗 可能有一个例子吗 官方的解释是 对轮廓中所有像素进行积分 我不知道什么整合 轮廓矩可以用来做什么 黑色 0 白色 1 的黑白图像的 0 度矩 这只是像素的总和 即白色像素的数量 x 轴和
  • 为什么 C# 中的堆栈大小正好是 1 MB?

    如今的 PC 拥有大量物理 RAM 但 C 的堆栈大小对于 32 位进程仅为 1 MB 对于 64 位进程仅为 4 MB C 中的堆栈容量 https stackoverflow com questions 823724 stack cap
  • 在 Android Widget 上处理多个按钮点击

    I 看到这个话题 https stackoverflow com questions 2082998 how to implement a button on an android widget并实施IntentService正如所描述的
  • 持久 stty 设置?

    目前 我可以通过执行禁用终端输出挂起 恢复 功能 CTRL S和CTRL Q废话 stty ixon 不幸的是 这不是永久性的 我需要设置这个选项每次我发射xterm 是否有一个可以编辑的文件可以记住我的设置并在重新启动和重新启动时保持永久
  • 播放动画一次而不是循环三个.js

    我已将搅拌机 JSON 动画导出到 THREE js 中 一切正常 但我只想播放动画一次并停止而不是循环播放动画 老问题 但如果有人需要它 解决方案是设置animation setLoop THREE LoopOnce let objLoa
  • 在 bash 中生成虚拟文件

    我想在 bash 中生成虚拟文件 内容并不重要 如果是随机的那就太好了 但所有相同的字节也是可以接受的 我的第一次尝试是以下命令 rm dummy zip touch dummy zip x 0 while x lt 100000 do e
  • 为什么我不能在 if 语句内强制转换对象?

    我在这里没有看到这个确切的问题 这让我感到惊讶 以下内容将无法编译 public int compareTo Object o if this order lt Category o order return 1 else if this
  • 如何测试写入标准输出的代码?

    如何在 CUnit 中为打印到的函数编写测试stdout 验证其输出 要测试的示例函数 void print printf Hello world 它的单元测试应该以某种方式验证 Hello world 是否已打印到控制台 void tes
  • 如何在android firestore中根据不同的if条件实现多个order by?

    Android中如何实现多个order byFirestore基于不同的if条件 我想根据不同的字段值对我的 firestore 项目进行排序 像这样 Query query firestoredb collection items doc