等待 Firestore 查询完成

2024-04-19

我目前正在尝试在 firestore 中运行多个查询,并希望等待它们全部完成后再执行下一个代码。我已经阅读了几种可能的途径,但还没有找到一个好的 Android 示例。

public HashMap<String,Boolean> multipleQueries(String collection, String field, final ArrayList<String> criteria) {

HashMap<String,Boolean> resultMap = new HashMap<>();

for (int i = 0; i < criteria.size(); i++){
    final int index = i;
    db.collection(collection).whereEqualTo(field,criteria.get(i)).limit(1)
    .get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {

    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
    if(task.isSuccessful()) {
         if(task.getResult().size() != 0 ){
           resultMap.put(criteria.get(index),true);
         } else {
             resultMap.put(criteria.get(index),false);
          }
    } else {
        resultMap.put(criteria.get(index),false);

    }

    }

     });
   }
   return resultMap;

}


Since get()返回一个Task, 您可以使用.

但你将无法返回List从这个函数,因为所有数据都是异步加载的。你能做的最好的就是返回结果Task.whenAll(...),它本身就是一个Task。请参阅 Doug Stevenson 关于成为任务大师的精彩文章:https://firebase.googleblog.com/2016/10/become-a-firebase-taskmaster-part-4.html https://firebase.googleblog.com/2016/10/become-a-firebase-taskmaster-part-4.html

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

等待 Firestore 查询完成 的相关文章

  • Hibernate 验证器:违规消息语言

    我有一个测试类 我正在测试一个域模型 该模型用例如注释 NotNull 在我的测试课中 我首先得到验证器 private static Validator validator BeforeClass public static void s
  • Android 11 - 访问我的应用程序 Android/Data 文件夹中的文件

    由于某种原因 我真的很挣扎 希望有人能帮助我指明正确的方向 我的目标是 Android 11 API 30 这似乎是所有问题的根源 降低目标可能对我有用 但谷歌似乎最终会迫使我走上这条路 所以我不妨弄清楚这一点 我的应用程序通常会按照标准写
  • Android asmack:stateChange 从未被调用

    我正在使用 asmack xmpp 客户端构建一个聊天应用程序 聊天工作正常 我已经实施了ChatStateListener but stateChanged方法永远不会被调用 目前 为了获取撰写状态 我正在解析消息 xml 以下是撰写 文
  • Java 数组返回奇怪的输出[重复]

    这个问题在这里已经有答案了 我正在为家庭作业问题创建一个方法 该方法返回数组中的最高值 我正在使用一个 for循环将数字输入到数组中 输入代码如下所示 int array new int n for i 0 i
  • ElasticSearch JavaAPI (SearchScroll)- search_context_missing_exception","re​​ason":"找不到 id 的搜索上下文

    我正在获取超过100k使用一个索引中的文档searchScroll并在所有字段中再添加一个字段100K文件 然后再次将这些文档插入到另一个新索引中 我正在使用SearchScrollapi 也在设置大小searchSourceBuilder
  • 将resourceBundle与外部文件java一起使用

    我一直在阅读有关此问题的其他问题和答案 但我不明白资源边界是如何完全工作的 我认为这与 Joomla 使用多语言选项的方式类似 基本上 您有要阅读的不同语言的不同消息的文件 所以我在 src Lang 文件夹中创建了 System prop
  • 从已排序的 ArrayList 中删除重复项,同时保留重复项中的某些元素

    好吧 一开始我以为这会很简单 但我想不出有效的方法来解决这个问题 我想出了一种蛮力的方法来解决这个问题 但这不是很优雅 我有一个数组列表 Contacts 是一个 VO 类 有多个成员 名称 区域 id ArrayList中存在重复项 因为
  • indexoutofboundException :setSpan (2...2) 结束长度超出长度 1

    I ve a MultiAutoCompleteTextView当用户按空格键时 我在其中创建芯片文本的自定义控件 我不希望用户在文本框为空时最初输入空格 所以我放了一个inputFilter以防止用户最初放置空格 这是过滤器代码 priv
  • Keycloak - 自定义表单操作在流程中不可见

    我正在尝试为用户注册实现自定义表单操作 我在表单上添加了一些自定义字段 我希望验证这些字段 在浏览了 keycloak 文档后 我意识到我需要 扩展 FormAction FormActionFactory 将actionfactory打包
  • 如何单击 TableLayout 中的特定 TableRow

    我制作了自己的复合控件 该控件使用 TableLayout 显示数据网格 并根据绑定到它的对象数组以编程方式在循环内添加 Tablerows 现在我想选择具有特定数据的特定行 以便由一个方法 那么我如何选择检索其数据的特定行来委托方法呢 你
  • 预期类型:java.lang.Integer,实际值:org.hibernate.id.IdentifierGeneratorHelper$2

    当我尝试调用 save 方法时 我的代码中出现此错误 当我在 JBoss 服务器上时 此方法工作正常 现在我转到 tomcat 服务器 7 ERROR HHH000123 IllegalArgumentException in class
  • EJB3 - 通过注入与查找获取 bean - 有什么区别、影响和陷阱?

    我知道有两种获取 EJB 实例的方法 通过 EJB 注释在 servlet 和 EJB 中进行依赖注入 在任何地方通过 Context lookup 进行 JNDI 查找 使用这两种方法有哪些差异 影响和陷阱 它们是一样的吗 依赖注入比查找
  • 永远不要关闭 Android SQLite 连接

    如果您根本不关闭连接会发生什么 我知道如果您不关闭它并尝试打开另一个单例 您会遇到异常 但是如果您有一个全局单例 并且您只是不关闭它 会发生什么情况 任何想法 时空连续体中形成了裂痕 威胁着宇宙中所有生命的灭绝 直到一群穿着鲜艳滑稽服装的人
  • 共享 Google 地图或拍摄 Android 手机屏幕截图

    我正在使用 android google map api v2 开发 android 应用程序 到目前为止我已经取得了以下成绩 打开谷歌地图显示用户的位置 当他行走时 他可以在地图上添加标记 标记他经过的地方 他可以删除标记或拖动它们 我现
  • Android 有类似 mechanize 这样的工具吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在创建一个 Android 应用程序 它必须在后台进行一些网上冲浪 以便为用户提供服务 我必须连接
  • 关于 servlet 的简要想法[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 从哪里可以获得有关 servlet 的知识 大多数人会从 Sun 的有关 servlet 的官方教程开
  • 如何在Android模拟器中找到数据库文件的路径?

    我正在 Android 模拟器中执行一些 sqlite 查询 我想知道数据库文件存储在哪个路径 请给我一些如何找到它的想法 如果你能给我一些代码片段 乌尔 s 库马兰 数据库通常存储在 data data your applications
  • Swing JTable:当行可见或滚动到底部时发生事件?

    我正在寻找一种方法 以便在 JTable 滚动时收到通知 以便特定行变得可见 或者在表底部滚动到视图中时失败 理想情况下 这应该在不轮询的情况下完成 而是通过一些事件触发来完成 有任何想法吗 Add a ChangeListener到滚动窗
  • 如何创建序列密钥来保护应用程序

    我有一个创建序列密钥的应用程序 如下所示 Take customername Sign customername using privatekey and sha dsa algorithm 然后可以通过使用公钥解码并检查客户名称匹配来检查
  • Java Webstart 和 URLConnection 缓存 API

    的描述URLConnection 缓存 API http docs oracle com javase 6 docs technotes guides net http cache html最后一句指出 Java 2 标准版中没有 URLC

随机推荐

  • 如何使用命令行工具从 PDF 文件中提取 JavaScript?

    如何使用命令行工具从 PDF 文件中提取 JavaScript 对象 我正在尝试使用带有此功能的Python 制作一个GUI 我找到了这两个模块 但无法运行它们 pyPdf2 和 pyPdf 当您处理 PDF 中的 JavaScript 时
  • 下载gensim数据集时出现ValueError

    我想下载 gensim glove wiki gigaword 100 数据集 这是我的代码 import gensim downloader as api model api load glove wiki gigaword 100 但我
  • 在非单一维度 1 处,张量 a (2) 的大小必须与张量 b (39) 的大小匹配

    这是我第一次从事文本分类工作 我正在使用 CamemBert 进行二进制文本分类 使用 fast bert 库 该库主要受到 fastai 的启发 当我运行下面的代码时 from fast bert data cls import Bert
  • Javascript 检测不活动或离开的用户

    是否有任何标准方法可以检测用户何时离开或没有查看网页 与此类似的东西library http www bedroomlan org coding detecting E2 80 98idle E2 80 99 and E2 80 98awa
  • MySQL 从多个值中选择,仅返回精确匹配

    我有一个查询 它获取从先前查询中获得的标签 ID 并从 post tag map 表中选择帖子 ID 例如 tagIds 可以是这样的 3 4 23 54 SELECT post id FROM post tag map WHERE tag
  • .Net MVC 自定义错误页面在 IIS8 中不起作用

    我有一个 NET MVC 应用程序 在使用 IIS 8 的服务器上获取自定义错误页面时遇到问题 在我的应用程序中 我会适当地捕获和抛出异常 并在错误页面上显示一条自定义的消息他们的违规行为 当在调试中通过 VS 运行应用程序时 以及当我在
  • Linqpad 中重新运行查询之间会保存什么状态?

    Linqpad 中重新运行查询之间会保存什么状态 我认为没有 所以如果你运行一个脚本两次 它两次都会得到相同的结果 但是 在同一个 Linqpad 选项卡中运行下面的 C 程序两次 您会发现第一次它打印一个空列表 第二次打印一个带有消息 h
  • 为不存在的文件创建 IShellItem 实例

    我怎样才能获得外壳项目 http msdn microsoft com en us library bb761144 aspx不存在的文件 或目录 的对象 SHCreateItemFromParsingName http msdn micr
  • 在查询上下文或传递的道具中找不到“客户端”

    这就是我尝试在我的 React Native 应用程序中实现 apollo graphQL 的方式 但我确实得到了错误 Could not find client in the context of Query or as passed p
  • Symfony 4 通过用户名更改密码 - 电子邮件不能为空

    介绍 我一直在尝试找出如何创建由用户名值控制的重置密码表单 错误 Path Message Invalid value Violation data email This value should not be blank null Con
  • 如何用jquery一一显示和隐藏每个div

    我想创建一个快讯标题 但我不知道问题出在哪里 因为我是网页设计的初学者 D so 我想创建标题的一部分 显示 淡入 一个标题并延迟隐藏 淡出 然后显示下一个标题 不停地循环 请帮助我学习如何创建 D 这些是我写的代码 div div cla
  • 在 angular.js 上使用 HTML5 PushState

    我正在尝试实现 html5 的 Pushstate 而不是 Angularjs 使用的 导航 我尝试过在谷歌上搜索答案 也尝试过 Angular irc 聊天室 但还没有成功 这是我的controllers js function Phon
  • 创建批处理文件以更改 Windows 7 中的电源选项

    有没有办法创建批处理文件并将其放在桌面上以更改 Windows 7 中的电源选项 具体来说 我将计算机设置为 30 分钟后休眠 现在我使用 Serve To Me Stream To Me 应用程序 我希望能够快速更改电源设置以允许连续操作
  • android在picasso加载后获取Drawable图像

    我正在使用 Picasso 库从 url 加载图像 我使用的代码如下 Picasso with getContext load url placeholder R drawable placeholder error R drawable
  • 如何将子集合添加到 Firebase Cloud Firestore 中的文档

    该文档没有任何有关如何将子集合添加到文档的示例 我知道如何将文档添加到集合以及如何将数据添加到文档 但是如何将集合 子集合 添加到文档 难道不应该有这样的方法 dbRef document example addCollection sub
  • 创建 UI 设计师

    我想使用 Silverlight WPF 或 WinForms 为自定义系统创建一个 UI 设计器 解决这个问题的最佳方法是什么 我应该注意哪些命名空间 SDK 等 我建议你看看sharpdevelophttp www icsharpcod
  • setTimeout 会使用 Heroku 免费的 dyno 小时吗?

    我有一个机器人 它的命令允许用户输入一条用破折号分隔的消息 然后输入指定的时间 然后将其传递给机器人 机器人在指定的时间过去后用该消息提醒用户 function reminder msg const message msg content
  • 如何使用位码选项制作胖框架?

    环境 XCode 7 0 1 模块 Objective C 捆绑类型 框架 你好 我正在尝试创建一个支持armv7 armv7s arm64 i386和x86 64的框架 我正在使用聚合来制作脂肪库 在聚合脚本中 我正在运行两个 xcode
  • VS Code - 错误:EPERM:不允许操作

    在 Windows 10 中使用 VS code 时 我遇到了很多权限问题 When trying to move a folder 错误 EPERM 不允许操作 重命名 路径 a gt 路径 b When deleting a folde
  • 等待 Firestore 查询完成

    我目前正在尝试在 firestore 中运行多个查询 并希望等待它们全部完成后再执行下一个代码 我已经阅读了几种可能的途径 但还没有找到一个好的 Android 示例 public HashMap