AngularFire.subscribe=>;console.log在使用map或flatMap后返回未定义

AngularFire.subscribe=>;console.log在使用map或flatMap后返回未定义,angular,rxjs,angularfire,observable,Angular,Rxjs,Angularfire,Observable,我对AngularFire、Firebase、rxjs等很陌生 有人能告诉我为什么以下命令从console.log返回“undefined”吗 this.af.database.object('/teams/' + this.id) .map((data) => { data.teamName = Teams[data.team]; }) .subscribe((data) => {

我对AngularFire、Firebase、rxjs等很陌生

有人能告诉我为什么以下命令从console.log返回“undefined”吗

    this.af.database.object('/teams/' + this.id)
        .map((data) => {
            data.teamName = Teams[data.team];
        })
        .subscribe((data) => {
            console.log(data)
        })
团队是一个枚举。红色=1,蓝色=2

我知道问题出在.map中,就好像我删除了它,然后只记录x或记录枚举查找一样,这两种方法都很好

这可以正常工作(并解析为红色):

与此一样(解析firebase可观测对象):

我还尝试在列表上使用flatMap,而不是在对象上使用map


任何帮助都将不胜感激。

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

您将
数据
变量视为json,但事实并非如此。因此,您的变量变得未定义。因为没有
data.Teamname

参考:

get方法从RxJS库返回http响应的可观察值(可观察值),map是RxJS操作符之一


谢谢你。这是有道理的。我见过有人使用toJSON?有没有什么方法可以在不丧失使用异步管道的能力的情况下向数据添加这样的内容?我可能在这里问了一个错误的问题,我的问题是数据从数据库返回,团队值为“1”,这是正确的,但不是我希望在屏幕上显示的。我想对团队枚举进行反向查找,并显示其字符串。我可能处理错了。@chrissymens你可以
.map((res:Response)=>res.json())
处理订阅中的数据。永远感谢你。谢谢:D@ChrissySemens我很高兴能帮上忙
    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);
        })
 .map((data) => {
            data.teamName = Teams[data.team];
        })