使用 AngularFire 从 Firestore 过滤数据

2024-05-12

我正在尝试使用 Angularfire 的查询集合从 Firestore 过滤数据:https://github.com/angular/angularfire2/blob/master/docs/firestore/querying-collections.md https://github.com/angular/angularfire2/blob/master/docs/firestore/querying-collections.md我对这种方法有点困惑。我已设法通过按钮进行过滤,但我不知道完成后如何重置或删除该过滤器。

过滤和重置所述过滤器的正确方法是什么?

这里我有一个堆栈闪电战:https://stackblitz.com/edit/query-collections-in-angularfire2 https://stackblitz.com/edit/query-collections-in-angularfire2

到目前为止我的代码:

服务.ts

filterBy() {
  this.avisos = this.afs.collection('avisos', ref => ref.where('categoria','==', 'Vehículos' )).valueChanges()
  return this.avisos;
};

myComponent.ts

filtrarData() {
  this.avisos = this.fs.filterBy()
  return this.avisos;
};

myComponent.html

<button (click)="filtrarData()" class="btn btn-outline-primary">Vehículos</button>

在您的 Firebase 服务中,有两种方法,一种是获取不带过滤器的集合,另一种是获取按给定“类别”过滤的集合。

在您的组件中,当初始化时(ngOnInit()函数)您调用服务中的方法来检索整个集合;然后“Vehicles”按钮触发该功能filtrarData()与您的服务中给定的“类别”。

过滤后,如果您想“清理”过滤器并取回整个集合,那么就像使用一个按钮调用相同的按钮一样简单ngOnInit()正在做,然后你的数组this.avisos将再次拥有整个集合:

应用程序组件.ts

  ngOnInit() {
    this.getAvisos()
  }

  getAvisos() {
      this.avisos = this.fs.getDomiciliarios()
  }

  filtrarData() {
      this.avisos = this.fs.filterBy()
  }

然后在组件的html中应用程序组件.html:

<button (click)="getAvisos()" class="btn btn-outline-primary btn-sm mx-1">Clean Filters</button>
<span>Filter by:</span>
<button (click)="filtrarData()" class="btn btn-outline-primary btn-sm mx-1">Vehículos</button>
<hr>

顺便说一下,请注意,不需要执行以下操作return this.avisosapp.component.ts 中的行,仅服务需要该行。

此外,如果您对 firebase.service 函数进行一些标准化,以获得通过带有参数的“categoria”过滤的集合,以防万一您想为多种类型的“categoria”调用它,那就太好了:

firebase.service.ts

filterBy(categoriaToFilter: string) {
    this.avisos = this.afs.collection('avisos', ref => ref.where('categoria','==', categoriaToFilter )).valueChanges()

    return this.avisos;
};

所以现在在你的应用程序组件.html你可以有类似的东西:

<button (click)="filtrarData('Vehículos')" class="btn btn-outline-primary btn-sm mx-1">Vehículos</button>

<button (click)="filtrarData('Casa')" class="btn btn-outline-primary btn-sm mx-1">Casa</button>

但要考虑到你的组件应用程序组件.ts那么将包括:

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

使用 AngularFire 从 Firestore 过滤数据 的相关文章

  • 该命令只能在 CLI 项目内部运行

    由于某些原因 我想使用Angular v5如果我运行以下命令 它会在其中构建一个应用程序angular 6这是我不想要的 ng new hello this creates angular app in the latest version
  • 部署 Angular 通用应用程序时找不到模块“firebase/app”

    我已经处理这个问题近两周了 我尝试了很多解决方法 但似乎都不起作用 我已经安装了angular fire and firebase到最新版本 尝试过ng add angular fire 配置自定义webpack config ts 尝试回
  • 如何在不使用额外组件的情况下在多个地方重用 HTML

    我目前正在尝试国际化菜单以显示要显示的列 我意识到我可以使用以下内容来自定义其文本
  • Exceljs:迭代每行和每列的每个单元格

    我想在所有单元格中添加粗边框 这是一个有角度的项目 我正在使用打字稿 我可以为 1 个单元格做到这一点 worksheet getCell A1 border top style thick left style thick bottom
  • 注入需要构造函数参数的服务

    我有一项服务需要启动一些值 Injectable export class MyService private myVals any constructor init any this myVals init 而消费者 Component
  • Firestore 规则和带有可变键的自定义声明

    我正在寻找一种使用自定义声明来保护我的应用程序的方法 但我很难在 firestore 规则中访问它们 我的用户可以是多个 比如 1 到 5 个 组织的员工 我希望将 oganizationId 作为用户自定义声明中的关键 并将角色作为值 像
  • Angular2 本地组件/模板重用

    我正在编写一些 Angular2 模板 这些模板具有不同容器的重复部分 在这种情况下 如果对事物进行分组并且启用了多部分模式 则视图可能会发生变化 请原谅这个很长的例子 但是像这样
  • 在 Angular 上开发时无法自动完成和自动导入

    我已经在 Windows 上安装了最新的 VSCode 然后我安装了 languaje 对 TypeScript 的支持 最后 设置一些编辑器选项并安装一些扩展 编辑器配置 editor fontSize 12 editor minimap
  • 为什么 Angular 4.3 中的 httpclient 返回 Object 而不是 any?

    Angular 4 3 中的新 HttpClient 类似乎又回来了Object代替any默认情况下 鉴于打字稿文档所述 这样做是否有特殊原因 永远不要使用数字 字符串 布尔值或对象类型 这些 类型指的是几乎从未使用过的非原始装箱对象 适当
  • 如何在菜单中显示用户名

    我有一个 user name 我的 app component ts 中的变量 我想用它来显示用户登录后从本地存储获取的用户名 但这仅在应用程序启动时加载 我想在用户登录后重新加载它 当我在登录后关闭并重新打开应用程序时 它工作正常并显示用
  • Firebase Firestore 安全规则的集合名称中的空格

    例如 我有一个 销售助理 集合 我正在尝试编写安全规则 allow read if exists databases database documents sales associates request auth uid 但我收到错误 因
  • 使用引用另一个文档的 Firestore 安全规则

    我试图将安全规则建立在对另一个对象的引用的基础上 我有一组用户和角色集合 用户对象有一个名为 角色 的字段 它是对角色集合中特定文档的引用 users id name role lt reference to particular role
  • 所有 'size' 、 'prototype' 的声明必须具有相同的修饰符

    I have downloaded code from repository and run it on local getting these errors have following versions when i run ionic
  • 带有 angular-cli 的 SVG 图标系统

    我有一个 Angular2 项目 它是通过 Angular CLI 创建的 在 webpack 中 有一个加载器来加载 svg sprite 并从 svgs 列表生成该 sprite 但是 当 angular cli 不允许我更改 webp
  • 删除 Firestore 中非常大的集合

    我需要删除 Firestore 中非常大的集合 最初我使用客户端批量删除 但是当文档发生变化并开始通过注释阻止这样做时 不建议从 iOS 客户端删除集合 不建议从 Web 客户端删除集合 不建议从 Android 客户端删除集合 https
  • 从 Angular 6 服务中绑定图像

    我有一个端点 它根据某些参数为我提供图像 这不是一个图像网址 而是一个普通图像 因此 当我到达邮递员中的端点时 作为响应 我收到一张图像 JPG 我是否可以在变量中接收该图像并将其绑定到 HTML 标签中 所有问题都有将图像 url 映射到
  • 具有动态名称的 Angular Material 2 日期选择器

    我正在尝试实现具有动态名称的日期选择器组件 我正在使用 Angular 4 开发基于 Angular Material 2 的项目 这是我的实现
  • 将 Angular v12 升级到 v13 时出现“模块未找到”错误

    嗨 开发者和贡献者 我正在努力找出以下错误的问题所在 src app models type ModelType ts 2 0 44 错误 找不到模块 错误 导出字段无法解析目录 请求为 当我将 Angular 版本从 v12 升级到 v1
  • Angular + Material - 如何使用 formgroup 处理多个复选框

    我有一个从后端获得的兴趣列表 我希望用户能够选择他们想要的兴趣 我将只存储他们在数据库中检查的兴趣 并在他们加载页面时预先填充 但首先我需要获取用户选择的这些兴趣 兴趣组件 ts export class InterestsComponen
  • 如何将数组数据作为formdata Angular 4发送

    我尝试发布一组数据未发送到服务器 网络服务 deleteCategory return this http post http www demo webapi deletecategory headers Authorization Tok

随机推荐