我一直在用Angularfire2制作一个Angular2应用程序。从Firebase检索数据时,我遇到了有关FirebaseListObservable的问题。这是我的代码。
this.requests = this._af.database.list('/requests');
在此之后不久,我记录了这个变量。
console.log(this.requests);
然后我得到一个未定义的,但我想等待这个请求的响应,因为this.requests总是在这段代码中未定义。我希望你教我如何等待firebase请求的结果。抱歉我的英语不好。
答案 0 :(得分:2)
由于从Firebase检索数据是异步的,因此您需要"订阅"当请求的数据进入时的事件。在不再使用连接以避免further problems之后关闭(取消订阅)连接是很重要的。这可以通过以下代码实现:
this.requests = this._af.database.list('/requests')
.subscribe(data => {
data.forEach(obj => {
console.log(obj.$key);
console.log(obj.$value);
});
this.requests.unsubscribe();
});
如果您想保留连接,因为您要更新数据,则应省略this.requests.unsubscribe();
而不是
ngOnDestroy(){
this.requests.unsubscribe();
}
组件中的,因此当组件被销毁时连接将被关闭。
答案 1 :(得分:0)
list方法返回一个Observable,以便您可以订阅它以获取返回的请求。
export class AppComponent {
requests: FirebaseListObservable<any[]>;
constructor(private af: AngularFire) {
}
ngOnInit() {
this.requests = this.af.database.list('/requests');
this.requests.subscribe(
(requests) => {
console.log(requests)
},
err => console.log(err)
);
}
}