Firestore 其中“数组包含”查询不适用于引用

2023-12-22

我有一个包含成员数组的“聊天”集合,其中包含参与聊天的用户。问题是我想获取当前用户参与的所有聊天。

我用这个查询来做到这一点:

getUserChats(): Observable<Chat[]> {
    return this.auth.currUser
      .pipe(
        take(1),
        switchMap(user => this.afs
            .collection('chats', ref => ref.where('members', 'array-contains', `/users/${user.uid}`))
            .snapshotChanges()
            .pipe(
              map(actions => {
                return actions.map(action => {
                  const data = action.payload.doc.data() as Chat;
                  const id = action.payload.doc.id;
                  return {id, ...data};
                });
              })
            ) as Observable<Chat[]>
        )
      );
  }

这适用于字符串,但不适用于引用。我怎样才能让它在参考文献中工作?

绿色有效红色无效

绿色:字符串 红色:参考


@Alex Mamo 答案是正确的,您需要一个 DocumentReference。

注意:您无法自己创建一个!

您必须通过查询 firebase 来获取参考!

Code:

return this.auth.currUser
      .pipe(
        take(1),
        switchMap(user => this.afs
            .collection('chats', ref => ref.where('members', 'array-contains', this.afs
              .collection('users')
              .doc<User>(user.uid)
              .ref))
            .snapshotChanges()
            .pipe(
              map(actions => {
                return actions.map(action => {
                  const data = action.payload.doc.data() as Chat;
                  const id = action.payload.doc.id;
                  return {id, ...data};
                });
              })
            ) as Observable<Chat[]>
        )
      );

关键部分是“价值”部分,即:

this.afs
              .collection('users')
              .doc<User>(user.uid)
              .ref

您查询并THEN使用 .ref 获取参考!

就是这样!这就是查询 DocumentReference 的方式!

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

Firestore 其中“数组包含”查询不适用于引用 的相关文章

  • 在 spring-boot 中设置 base-href 和 context-path - Angular 6 应用程序

    我正在构建一个 Web 应用程序 其中 UI 客户端组件是使用 Angular 6 构建的 后端 服务器端 位于 Spring boot 上 申请预计可在 http localhost 8080 FUtility 我通过在 appmodul
  • 角度2中未定义的值

    我正在创建一个应用程序 在其中使用 Ag Grid api 在网页上列出我的数据库内容 Ag grid 有一个预定义的 api 来获取所选行的内容 这是我的代码 export class customer entryComponent pu
  • Firebase Function 从其他文件导入函数 - javascript

    我正在使用 javascript 构建 firebase 函数 现在我有很多内部调用函数 我计划将这些函数移动到不同的文件中 以避免 index js 变得非常混乱 下面是当前的文件结构 functions index js interna
  • 您必须位于 angular-cli 项目中才能使用serve命令

    我正在尝试运行拖放示例dragula https github com valor software ng2 dragula 但是当我跑步时ng serve它抱怨 You have to be inside an angular cli p
  • Firebase GAS webapp Google 弹出窗口消失

    我正在尝试升级我的 firebase GAS web 应用程序 之前我有一个弹出窗口 可以让用户使用 Google 登录 我不确定我做错了什么 但我已经升级到新的 firebase 现在正在尝试使用新的代码格式进行相同的登录 发生的情况是
  • 拖动元素时是否禁用 mousemove 事件?

    我试图通过在拖动元素时观察文档上的 mousemove 事件来移动元素 使用 html5 拖放 我在文档的父元素上添加了一个 mousemove 侦听器 每当我移动鼠标时都会触发该监听器 但是一旦我开始拖动另一个子元素 我就不再看到 mou
  • 如何在每个组件完成加载后在 Angular 2 中运行 jquery 函数

    我已经尝试了所有生命周期挂钩 但无法实现所需的结果 我需要的结果是触发一个函数 该函数在加载每个元素 组件 后初始化用于单个页面上不同元素的许多 jquery 插件 假设你有这个结构 主页 滑块 小部件 产品旋转器 ETC 这些元素中的每一
  • 如何在列表视图中滚动添加更多项目?

    这里的代码当前加载了存储在 Firestore 集合中的所有啤酒 我如何最初只加载 10 个啤酒 然后当用户向下滚动并到达 10 个啤酒列表的末尾时 它应该加载最后一次酿造后还有 10 杯 并且酿造应根据时间戳进行排序 class Brew
  • 如何使用 firebase 托管托管 sveltekit 应用程序?

    我正在尝试将 sveltekit 应用程序部署到 firebase 带有 sveltekit 的 bigginner 我以为我们要构建应用程序并获取我们的 index html 文件 但 sveltkit 的情况并非如此 我正在使用 sve
  • 如何在 Angular (v4+) 上执行 window.onclick()

    我一直在尝试关闭调用按钮 即窗口 之外的单击下拉菜单 使用 javascript 很容易 因为我可以简单地 Close the dropdown menu if the user clicks outside of it window on
  • 带有 Firebase 通知的 Flutter Web - subscribeToTopic

    我想在我的 flutter web 应用程序中接收 firebase 通知 我知道 firebase messaging 包不可用于网络 但我已经管理配置我的应用程序以获取令牌 在网络应用程序位于后台时接收并显示消息 并在应用程序位于前台时
  • 在 Angular html 模板中访问常量枚举

    假设我有一个常量枚举 export const enum MyConstEnum Value1 Value1 Value2 Value2 Value3 Value3 现在我想在我的 Angular 模板中使用它 span This has
  • 如何在父视图和子视图中使用组件两次(DI 是共享的,comp 是单例)

    我有一个按钮组件 具有应用程序特定行为 我打算在应用程序中广泛使用它 问题是 当我有一个使用此按钮的父 子视图时 单击父按钮会触发子视图按钮的 操作 如果不这样做 您自然不会明白发生了什么有多年的面向对象编程经验 让年轻的学校新手使用 da
  • Cloud Functions for Firebase - 通过 Nodejs/Cloud Function 将多个 PDF 合并为一个

    我遇到了一个问题 我试图通过云功能合并一堆 PDF 然后将合并的 PDF 下载到用户的计算机上 我的提供程序中有一个函数 它调用云函数并传递指向 pdf 的 URL 数组 如下所示 mergePDFs pdfs Create array o
  • 在指令中动态添加 *ngIf

    如何动态地将 ngIf 添加到用属性指令修饰的元素 为了一个简单的实验 我尝试了这个 Directive selector lhUserHasRights export class UserHasRightsDirective implem
  • 想要动态处理与分页相关的页码显示:ReactJS

    我有一些分页逻辑工作得很好 唯一的问题是我只能让它显示并固定数量的页面可供选择 现在我已经把它放到了 5 页 但我希望它能够根据总记录动态更改 假设我有 100 条记录 每页限制为 10 条 将有 10 页 现在我只能让它以这种方式显示 第
  • 如何解决 Firebase AuthUi 中无法找到显式活动?

    使用 firebase UI 时 我无法找到显式活动类 com firebase ui auth KickoffActivity protected void onCreate Bundle savedInstanceState super
  • GeoFire Swift 3 - 保存和更新坐标

    我正在尝试使用 GeoFire 将坐标存储到 Firebase 数据库中 我不确定如何更新新坐标 因为它们每秒都会更改 更新 随着childByAutoId 它正在为每辆自行车生成一个新的唯一 ID 如何引用这个唯一的自行车 ID 例如 用
  • 如何在 Android 模块中使用 FirebaseAuth

    我正在开发一个聊天库 我想在其中显示登录用户的对话 制作该库的原因是我想将其集成到多个项目中 我现在面临的问题是FirebaseAuth表示用户尚未登录 FirebaseAuth getInstance mFirebaseApp getCu
  • 为 Node.js 客户端应用程序保留 Firebase 用户

    我正在使用 Firebase 构建 Node js 命令行界面 CLI 用于与后端进行身份验证 我想避免让用户每次运行命令时都输入密码 相反 我想实现一个 登录 流程 将凭证保留到文件系统 该凭证可用于后续的无密码身份验证 直到用户 注销

随机推荐

  • Anaconda 与 Python 有何关系?

    我是初学者 我想学习计算机编程 所以 现在我已经开始自学Python 并掌握了一些C和Fortran编程的知识 现在 我已经安装了Python 3 6 0版本 并且我一直在努力寻找合适的文本来学习这个版本的Python 甚至在线讲座系列也要
  • 类型转换和类型转换之间的区别? [复制]

    这个问题在这里已经有答案了 可能的重复 铸造和转换之间有什么区别 https stackoverflow com questions 3166840 what is the difference between casting and co
  • 将配置文件的内容读取到与其关联的 dll 中

    我已将字符串保存在 dll 应用程序的设置中 我想找回它们 这是我的 dll 的配置文件
  • 如果已命中断点 A,则启用断点 B

    我经常发现自己在代码中的某处设置断点 A 并在命中断点时手动启用一个或多个断点 一个典型的情况是当我正在调试单元测试并且不关心前面的测试时 void testAddZeros Number a 0 Number b 0 Number res
  • 给定 WSDL 的 Web 服务客户端

    我正在尝试用 Java 创建一个 Web 服务客户端 我不知道该怎么做 这是 WSDL 的 URL https testservices gatewayedi com PayerList payerlist asmx wsdl https
  • 合并多列,排除空值

    我试图弄清楚如何组合多个列 不包括 NA 值 输入数据框 data lt data frame id c 1 3 Item1 c Egg Item2 c Chicken Flour Item3 c Bread Item4 c Milk 所需
  • docker 中的 Plotly dash 不加载资源

    我有一个多页破折号应用程序 在本地运行时可以按预期工作 女服务员服务 listen 0 0 0 0 80 web app wsgi application 因此资产文件夹中的所有资产都正确加载 图像加载了src app get asset
  • 有没有更好的方法来计算中位数(而不是平均值)

    假设我有以下表定义 CREATE TABLE x i serial primary key value integer not null 我想计算的中位数value 不是AVG 中位数是将集合分为包含相同数量元素的两个子集的值 如果元素个数
  • Tensorflow Callback:如何将最佳模型保存在内存而不是磁盘上

    我使用 Tensorflow 使用以下函数进行回归 import tensorflow as tf def ff args kwargs model tf keras models Sequential model add tf keras
  • jQuery 对象和 DOM 元素

    我想了解 jQuery 对象和 DOM 元素之间的关系 当 jQuery 返回一个元素时 它显示为 object Object 在警报中 什么时候getElementByID返回一个显示为的元素 object HTMLDivElement
  • 重载+以支持元组

    我希望能够用 python 写这样的东西 a 1 2 b 3 4 c a b c would be 4 6 d 3 b d would be 9 12 我意识到您可以重载运算符以与自定义类一起使用 但是有没有办法重载运算符以与对一起使用 当
  • 在 Linux 中查找最小文件的名称?

    假设您必须找到目录中第四小的 非隐藏 文件的名称 执行此操作的正确命令是什么 假设我是一个只知道的人ls l head tail line and awk print 陈述 From man ls S按大小降序对输出进行排序 r反转输出的顺
  • Thread.sleep() 停止我的绘画?

    我正在制作一个程序 尝试为一张在屏幕上移动的卡片设置动画 就像您实际上从桌子上绘制它一样 这是动画的代码 public void move int x int y int curX this x the entire class exten
  • sklearn:用户定义的时间序列数据交叉验证

    我正在尝试解决机器学习问题 我有一个特定的数据集时间序列元素 对于这个问题 我使用著名的 python 库 sklearn 这个库中有很多交叉验证迭代器 还有几个迭代器用于您自己定义交叉验证 问题是我真的不知道如何定义时间序列的简单交叉验证
  • 为什么“允许的内存大小已耗尽”?

    我正在编写一个批处理脚本并得到一个Allowed memory size of 134217728 bytes exhausted error 我不明白为什么内存会被填满 我尝试取消设置 row变量 但这并没有改变什么 这是我的代码 sql
  • 并发和内存模型

    我在看this http channel9 msdn com posts AFDS Keynote Herb Sutter Heterogeneous Computing and C AMPHerb Sutter 关于 GPGPU 和新的
  • Sublime Text 2 - 在解释器中运行选定的 python 代码

    在 Sublime Text 编辑器中编辑 python 脚本时 我想逐行运行脚本 或者在嵌入式解释器中逐块运行脚本 有没有一个方便的方法来做到这一点 对我来说完美的方法是 选择几行代码 点击快捷方式 这将在解释器中运行选定的代码 我认为有
  • 排除R中df中顶部和底部1%的数据

    对于示例数据框 set seed 1000 a lt rnorm 1000 b lt seq 1 1000 by 1 df lt data frame b a 我想排除数据中前 1 和后 1 a 列 我读过 R 中的修剪和分位数 但似乎无法
  • ngrx 处理对象中的嵌套数组

    我正在学习 redux 模式并使用 ngrx 和 Angular 2 我正在创建一个具有以下形状的示例博客网站 export interface BlogContent id string header string tags string
  • Firestore 其中“数组包含”查询不适用于引用

    我有一个包含成员数组的 聊天 集合 其中包含参与聊天的用户 问题是我想获取当前用户参与的所有聊天 我用这个查询来做到这一点 getUserChats Observable