我对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,而不是在对象上进行映射。
任何帮助都将不胜感激。
答案 0 :(得分:0)
因为get
和map
方法的返回都是可观察的,而不是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操作符之一。