将 4 个 angularfire2 observables 合并为 1
Combine 4 angularfire2 observables into 1
这是我的新应用。
Angular 火 2 + Firebase
getErros(start, end): FirebaseListObservable<any>{
this.lista = this.db.list('/erros/geral',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
});
this.lista2 = this.db.list('/erros/utilsst',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
});
this.lista3 = this.db.list('/erros/utilfac',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
});
this.lista4 = this.db.list('/erros/geral',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
});
this.listafinal = (this.lista && this.lista2 && this.lista3 && this.lista4);
return this.listafinal;
}
来自 firebase 的简单数据搜索,但无法正常运行。有什么方法可以执行此操作吗?
无法正常工作。只接收来自 this.lista4
的数据
我建议使用 combineLatest
。使用此运算符,您可以将所有四个组合成单个可观察值,如果更改任何一个可观察值,这将生成一个新值
Observable.combineLatest(
this.db.list('/erros/geral',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
}),
this.db.list('/erros/utilsst',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
}),
this.db.list('/erros/utilfac',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
}),
this.db.list('/erros/utilatas',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
})
)
.map(([geral, utilsst, utilfac, utilatas]: [any, any, any, any]) =>
({ geral, utilsst, utilfac, utilatas }) // Do add operation here.
)
我对代码做了一些修改。
import { Injectable } from '@angular/core';
import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database';
import { Observable } from 'rxjs/Rx';
import * as Rx from 'rxjs';
@Injectable()
export class ProcurarService {
constructor(private db: AngularFireDatabase) {
}
hey;
getErros(start, end): FirebaseListObservable<any>{
this.hey = Observable.combineLatest(
this.db.list('/erros/geral',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
}),
this.db.list('/erros/utilsst',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
}),
this.db.list('/erros/utilfac',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
}),
this.db.list('/erros/utilatas',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
})
)
.map(([geral, utilsst, utilfac, utilatas]: [any, any, any, any]) => { let erro = [geral, utilsst,utilfac,utilatas]; console.log(erro); return erro; } )
return this.hey;
}
}
这种方式可行,
问题是:
它不显示数据,我的搜索栏也不工作..
这是我的新应用。
Angular 火 2 + Firebase
getErros(start, end): FirebaseListObservable<any>{
this.lista = this.db.list('/erros/geral',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
});
this.lista2 = this.db.list('/erros/utilsst',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
});
this.lista3 = this.db.list('/erros/utilfac',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
});
this.lista4 = this.db.list('/erros/geral',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
});
this.listafinal = (this.lista && this.lista2 && this.lista3 && this.lista4);
return this.listafinal;
}
来自 firebase 的简单数据搜索,但无法正常运行。有什么方法可以执行此操作吗?
无法正常工作。只接收来自 this.lista4
的数据我建议使用 combineLatest
。使用此运算符,您可以将所有四个组合成单个可观察值,如果更改任何一个可观察值,这将生成一个新值
Observable.combineLatest(
this.db.list('/erros/geral',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
}),
this.db.list('/erros/utilsst',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
}),
this.db.list('/erros/utilfac',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
}),
this.db.list('/erros/utilatas',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
})
)
.map(([geral, utilsst, utilfac, utilatas]: [any, any, any, any]) =>
({ geral, utilsst, utilfac, utilatas }) // Do add operation here.
)
我对代码做了一些修改。
import { Injectable } from '@angular/core';
import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database';
import { Observable } from 'rxjs/Rx';
import * as Rx from 'rxjs';
@Injectable()
export class ProcurarService {
constructor(private db: AngularFireDatabase) {
}
hey;
getErros(start, end): FirebaseListObservable<any>{
this.hey = Observable.combineLatest(
this.db.list('/erros/geral',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
}),
this.db.list('/erros/utilsst',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
}),
this.db.list('/erros/utilfac',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
}),
this.db.list('/erros/utilatas',{
query: {
orderByChild: 'titulo',
limitToFirst:10,
startAt: start,
endAt: end
}
})
)
.map(([geral, utilsst, utilfac, utilatas]: [any, any, any, any]) => { let erro = [geral, utilsst,utilfac,utilatas]; console.log(erro); return erro; } )
return this.hey;
}
}
这种方式可行,
问题是:
它不显示数据,我的搜索栏也不工作..