- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 Angular 网络应用程序中使用 AngularFire2。由于 Firebase 的查询限制,我无法形成一个能够准确提供我需要的数据的查询(至少在不对我的模式进行重大更改的情况下)。
所以我想在 javascript (typescript) 中应用一个额外的客户端过滤条件。我该怎么做呢?我可以以某种方式向可观察对象添加过滤函数吗?下面是一个片段,说明了我在做什么。
在组件的 HTML 模板中,我有类似下面的内容。 html 片段中的“jobs”变量是一个 FirebaseListObservable。
<tr *ngFor="let job of jobs | async">
.. fill in the table rows
组件代码如下所示:
// in the member declaration of the class
jobs : FirebaseListObservable<Job[]>;
...
// Notice in ngOnInit(), I'm filtering the jobs list using the the
// Firebase criteria. But I want to filter on an additional field.
// Firebase allows only single field criteria, so I'm looking for
// a way to apply an additional client-side filter to jobs to eliminate
// some additional records.
ngOnInit(){
this.jobs = this.af.database.list("/jobs/", {query: {orderByChild : "companyKey", equalTo:someKey}})
}
有没有办法在“this.jobs”上应用过滤器组件,以便我可以应用本地(客户端)过滤器?
最佳答案
我遇到了同样的问题。缺少的部分是过滤数组本身(Job[]
),而不是它周围的 Observable 包装器(FirebaseListObservable<Job[]>
)。
能够使用 RxJS 运算符做到这一点 map
.
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map'
...
@Component({
...
})
export class JobComponent {
...
getJobsLessThanPrice(price: number): Observable<Job[]> {
return this.af.database.list('jobs', {query: {...}})
.map(_jobs => _jobs.filter(job => job.price > price));
}
}
如果job.price > price
返回 true,然后它被包含。
还注意到您的 jobs
属性类型为 FirebaseListObservable<Job>
, 我本以为可观察类型应该是 Job[]
对比Job
.
关于angular - 如何在客户端过滤 FirebaseListObservable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39549729/
const placeId = this.getPlaceId(); this.af.database.list(`placeUsers/${placeId}`).subscribe(
我在 Angular 网络应用程序中使用 AngularFire2。由于 Firebase 的查询限制,我无法形成一个能够准确提供我需要的数据的查询(至少在不对我的模式进行重大更改的情况下)。 所以我
我正在尝试迭代并找到 Firebase 后端中项目的索引,然后左右滑动通过这些: export class articleSwiperComponent implements OnInit {
我正在构建一个由这个 Firebase 数据库结构支持的简单聊天应用程序: messages: { "-KTjL_oLrKOboa2su2zk": { name: "puf", t
我在 Firebase 上做了一个小应用。我一直在使用 angularfire 提供的一种称为 FirebaseListObservable 的类型,它允许您观察数据的变化。我遇到的问题是 Angul
编辑以包含更多详细信息: 假设我在 Firebase 中有一个 Survey 对象集合,在 Firebase 中有一个 SurveyTaker 对象集合,以及一个 surveyTakersBySurv
我正在使用 angularfire-beta6。假设我有一个 myHeroes:FirebaseListObservable并在我的模板中将它与 async 管道一起使用我无法访问 Hero 类中的函
这是我的 package.json "dependencies": { "@angular/cdk": "^2.0.0-beta.8", "@angular/common": "^4.
我正在使用数据表 (datatables.net),并且希望使用 AngularFire2 从 Firebase 中提取数据表的数据来获取对象。 但是,这会获取一个 FirebaseListObser
作为我之前问题的后续问题(在这个问题上我无法遍历一个似乎已满的数组),我现在知道问题出在哪里了,应该是列表不是'当我开始使用它时它已经满了。 然后我尝试使用 promise 等待任务异步执行然后继续。
我正在使用 Ionic 2 和 Firebase 来构建聊天应用程序。 我添加了以下应该用于添加过滤器的内容: import 'rxjs/add/operator/filter'; .
我在使用 Angular2 应用程序(使用 Angularfire2)时遇到问题,当部署到生产环境时,与任何其他浏览器相比,FirebaseListObservable 在移动版 Safari 上的加
我正在学习一年前制作的教程,在学习过程中,我遇到了一些似乎已过时的代码。我已经搜索了几个解决方案,但遗憾的是并没有解决我的问题。因此,是否有一种更新的方式来编写以下代码? import {Angula
我想从 Firebase 实时数据库中获取所有用户,并按得分属性对他们进行排序。我已经使用变量 让它工作了 users: FirebaseListObservable; 但我得到了错误: Type '
我有问题 import { AngularFireDatabase, FirebaseListObservable } from "angularfire2/database"; 我导入了 Angul
我正在尝试更新 FirebaseListObservable 中的项目使用 Angularfire2 的 Angular2 项目中的对象。 FirebaseListObservable 的定义如下:
我想在 this.items 中加载所有消息后执行向下滚动的任务我正在使用 angularfire2 items: FirebaseListObservable; th
如另一个问题所述,我正在使用 Firebase 作为后端开发 Ionic 2 应用程序。 我有类别和产品。产品属于类别。由于它是“n 到 m”的关系,因此产品和类别存储在 firebase 中的单独节
我是 Angular 4 的新手,所以我正在使用 Angular 4 创建一个 firebase 聊天应用程序,然后当我像这样导入一些模块时: import { AngularFire, AuthPr
我是一名优秀的程序员,十分优秀!