2016-11-05 20 views
2

後返回undefined我是很新,AngularFire,火力地堡,rxjs等。AngularFire .subscribe =>的console.log使用地圖或flatMap

誰能告訴我,爲什麼下面的回報從控制檯「不確定」的.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

因爲從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庫HTTP響應(觀察不到)和地圖是RxJS運營商之一。

+0

謝謝echonax。這就說得通了。 我見過使用toJSON的人嗎? 有什麼方法可以將數據添加到數據中,而不會失去使用異步管道的能力? 我可能會問這裏的錯誤問題,我的問題是數據從團隊值'1'返回數據庫,這是正確的,但不是我想要在屏幕上顯示的數據。 我想對團隊枚舉進行反向查找並顯示它的字符串。 我可能處理這一切都是錯誤的。 –

+0

這應該是查看邏輯我猜.. –

+0

@ChrissySemens您可以'.map((res:Response)=> res.json())'並處理您的訂閱中的數據。 – echonax

相關問題