AngularFire .subscribe => console.log在使用map或flatMap后返回undefined

时间:2016-11-05 19:20:49

标签: angular rxjs angularfire observable

我对AngularFire,Firebase,rxjs等都很陌生。

任何人都可以告诉我为什么以下返回' undefined'来自console.log?

    this.af.database.object('/teams/' + this.id)
        .map((data) => {
            data.teamName = Teams[data.team];
        })
        .subscribe((data) => {
            console.log(data)
        })

团队是一个枚举。红色= 1,蓝色= 2 ......

我知道问题出在.map中,好像我删除了它,只记录x或记录枚举查找都工作正常..

这样可以正常工作(并解决红色):

    this.af.database.object('/teams/' + this.id)
        .subscribe((x) => {
            console.log(Teams[x.team]);
        })

就像这样(解决一个可观察的火基):

    this.af.database.object('/teams/' + this.id)
        .subscribe((x) => {
            console.log(x);
        })

我还在列表上尝试了flatMap,而不是在对象上进行映射。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

因为getmap方法的返回都是可观察的,而不是json。

 .map((data) => {
            data.teamName = Teams[data.team];
        })

您将data变量视为json,但它不是。所以你的变量变得不确定。因为没有data.Teamname

这样的东西

参考:https://angular.io/docs/ts/latest/guide/server-communication.html#!#fetch-data

  

http.get方法从RxJS库返回一个Observable of HTTP Responses(Observable),map是RxJS操作符之一。