Firestore 上的条件 where 查询

2024-01-11

我尝试在这里实施解决方案:

firestore 查询中的条件 where 子句 https://stackoverflow.com/questions/48514932/conditional-where-clause-in-firestore-queries

Firestore:多个条件 where 子句 https://stackoverflow.com/questions/48036975/firestore-multiple-conditional-where-clauses

但它们似乎不起作用(请参阅下面的代码示例)。 Firestore 改变了什么吗?我在下面的代码中弄乱了一些东西吗?

提前致谢!

对于上下文,以下内容位于 React 功能组件内的 useEffect 挂钩中。但是,我不认为这是相关的,因为下面的工作示例(没有条件查询)工作正常。

基本示例 - 过滤器硬编码 - 工作正常。过滤器已应用

const query = db.collection('todos')
    .where('userId', '==', userId)
    .where('status', '==', 'pending');

query.onSnapshot((res) => {
  const todos = [];
  res.forEach((todo) => {
    todos.push(todo.data());
  });
});

不起作用 - 返回具有所有状态的结果。 IF 块内的 where 查询尚未应用

const query = db.collection('todos').where('userId', '==', userId);

if (filter === 'complete') {
  query.where('status', '==', 'pending');
}
if (filter === 'complete') {
  query.where('status', '==', 'complete');
}
query.onSnapshot((res) => {
  const todos = [];
  res.forEach((todo) => {
    todos.push(todo.data());
  });
});

另一个确保 if 块本身不是问题的示例。创建了一个初始查询,并在其后添加了一个“where”条件(但在 onSnapshot 之前)。在本例中,应用了 userId where 子句,但忽略了 status where 子句。返回所有状态待办事项

const query = db.collection('todos').where('userId', '==', userId);

query.where( 'status', '==', 'pending' ); // This 'where' clause is being ignored

query.onSnapshot((res) => {
  const todos = [];
  res.forEach((todo) => {
    todos.push(todo.data());
  });
});

您没有正确遵循以下模式你引用的问题 https://stackoverflow.com/questions/48036975/firestore-multiple-conditional-where-clauses.

每次要添加新条件时,都必须重新分配查询对象。只需致电where屡次不做你想做的事。where每次调用时都会返回一个全新的查询对象。你必须继续在该对象的基础上进行构建,而不是原来的对象。

// use LET, not CONST, so you can ressign it
let query = db.collection('todos').where('userId', '==', userId);

// Reassign query, don't just call where and ignore the return value
if (filter === 'complete') {
  query = query.where('status', '==', 'pending');
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firestore 上的条件 where 查询 的相关文章

随机推荐

  • 无法将导出用作类型,因为导出是一个值

    运行时出现此错误flow check 但我不确定这意味着什么 无法将导出用作类型 因为导出是一个值 要获取值的类型 请使用 typeof 错误位置是0 1 在 flow注释处 这是代码 flow import Chunk from mode
  • svn commit 不带-m

    我尝试过输入svn commit它将弹出一个屏幕 其中显示正在添加 更改 等的文件列表 以及在消息中输入的位置 但按 Enter 会在消息中添加换行符 而不是启动提交 是否有热键或某些组合键来启动提交 看起来底部有某种类似 emacs 的控
  • 如何以及在何处使用 AsyncStorage 保存整个 redux 存储

    我想知道是否必须执行类似的操作 才能在反应本机应用程序中使用 AsyncStorage 保存应用程序的整个存储 并在应用程序启动时检查它是否存在 var store loadInitialState async gt try var val
  • Vuetify 构建为 Web 组件样式未显示

    我正在使用 Vue 和 Vuetify 以及 Web 组件构建一个应用程序 当我将 Vuetify 添加为 Web 组件时 CSS 样式 Vuetify 消失了 我尝试将以下内容添加到 demo html 文件中但这没有帮助 我的仓库是vu
  • android listview半透明选择行的颜色

    我需要在列表视图中实现半透明的行选择 以及 按下 状态 如果我应用纯色 那么一切都会按预期进行 但如果我应用半透明颜色 44444444 那么我会看到默认选择颜色 在我的 2 3 android 上为橙色 在它的顶部是我的颜色 它使橙色稍微
  • 在 XML 中应如何解释带有 CDATA 和空格的文本节点?

    System Xml 解析功能给我带来了一些惊喜 我想知道以下内容如何should被解释 或者如果这是 取决于实现 版本1
  • NuGet - RID 和 TFM 示例

    我一直在 GitHub 上查看 NuGet3 的代码 并且在以下位置看到了几种文件夹模式https github com NuGet NuGet3 blob a5bc907d36ddaa8d4fa6c499e50d7ebf8993ed39
  • 如何在Python中用空格替换所有这些特殊字符?

    如何在 python 中用空格替换所有这些特殊字符 我有一份公司名称清单 例如 myfiles txt 我的公司 INC 老酒私人有限公司 大师头脑有限公司 顶点实验室有限公司 印度新公司 印美私人有限公司 这里 按照上面的例子 我需要文件
  • 如何从 Java 运行 cygwin?

    我想从 Java 开始 如何从 Java 程序启动 cygwin 首先 您必须将 bash exe 设置为环境变量 以便此行将启动 bash Runtime rt Runtime getRuntime execute bash
  • 使用 Firebase Auth 登录 iOS 应用是否满足“导出合规信息”加密要求

    在使用 App Store Connect 上传应用程序时 我看到过有关导出合规性信息加密问题的类似问题 但我仍在寻找问题的直接答案 我正在上传 iOS 应用程序 必须回答以下问题 出口合规信息 您的应用程序使用加密吗 即使您的应用程序仅使
  • Sharepoint 2013 计算字段作为超链接呈现为文本

    I have a column in Sharepoint 2013 and set the type to Calculated I have set the data return type to integer pic attache
  • 如何在中间件中使用“this”上下文

    我出于我的目的编写了自己的中间件作为模块 如下所示 myMiddleware js module exports fn1 function req res next console log fn1 next fn2 function req
  • 错误:无法加载 libphutil

    我们已经安装运行Phabricator在我们的一台服务器中 今天 我按照 中给出的标准步骤对其进行了升级 https secure phabricator com book phabricator article upgrading htt
  • 在 Linq EF 查询中使用 SQRT

    我需要使用 SQRT 函数作为 Linq EF 查询中 where 子句的一部分 我想我可以这样做 var qry context MyTable Where sqrt it field gt 1 但它返回一个错误 指出 sqrt 无法解析
  • 强制某些编译器生成的变量进入特定的 ELF 部分(使用 gcc)

    我将从最终的问题开始 在带有 gcc 的 C 中 是否有可能获得以下值 func 或同等地 FUNCTION 存储在除 rodata 或任何地方 mrodata 点 或其小节 完整解释 假设我有一个日志记录宏 define LOG fmt
  • Xcode 无法在选定的目标上运行

    今天早上我正在运行我的应用程序 现在当我尝试在 iPhone 5 1 模拟器上运行时突然出现以下错误 无法在选定的目的地上运行 目标不支持构建所选软件的体系结构 切换到支持该架构的目标以运行所选软件 我删除了方案 但仍然没有解决方案 我正在
  • 显式模板实例化的 gcc 问题?

    据我了解 专业化的声明或 typedef 应该导致模板类被实例化 但 gcc 似乎不会发生这种情况 例如 我有一个模板类 模板类Foo 我写的 class Foo
  • 调整图像大小而不损失任何质量[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何在不影响图像质量的情况下调整图像
  • 在整个应用程序中设置 on_delete 的简单方法

    我一直在使用 WdPython 的论据并发现tons为了准备升级到 Django 2 0 我需要进行一些更改 python Wd manage py runserver 最主要的是on delete https docs djangopro
  • Firestore 上的条件 where 查询

    我尝试在这里实施解决方案 firestore 查询中的条件 where 子句 https stackoverflow com questions 48514932 conditional where clause in firestore