使用带有Firebase的Angular中的Observable和Subscribe

时间:2017-12-09 19:11:41

标签: angular firebase

我正在尝试订阅一个以角度2返回可观察对象的函数。 因此,当添加任何新工作符时,主调用函数应具有值

//基于firebase DB的功能

getWorkers():Observable<any> {
    firebase.database().ref('/workers').on('child_added', (snapshot) => {
        return snapshot.val();

    });

}

订户功能

workers: any[];
public ngOnInit() {
    this.db.getWorkers().subscribe(workers => this.workers = workers);
}

这是说函数返回类型不是Observable,因此抛出错误。

2 个答案:

答案 0 :(得分:2)

你的第一个方法必须返回observable。

getWorkers():Observable<any> {
    firebase.database().ref('/workers').on('child_added', (snapshot) => {
        return Observable.of(snapshot.val());

    });
}

答案 1 :(得分:1)

  • for不会返回Observable,因此您无法返回。

  • 如果您从回调函数中返回for row in tappedArray.indices { print("row \(tappedArray[row])") tappedArray[row]["timeOnIce"] = timerCounter } ,如下所示,它将仅返回回调函数而不是外部firebase.database()函数。

您需要根据回调返回的数据创建一个observable。

我会使用 Observable.bindCallback

Observable.of(val)

然后你可以将它用作任何可观察的:

getWorkers()

这里有一些信息from the docs