2016-11-05 6 views
2

私はrxjsなどAngularFire、Firebase、とかなり新しいですが、使用後は不定にconsole.log帰国..AngularFire .subscribe =>マップやflatMap

は、誰がコンソールから教えてもらえます。ログ?

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

チームは列挙型です。赤= 1、青= 2 ...

私は(これは正常に動作します

..私はそれを削除し、ちょうどXを記録したり、列挙型の両方が正常に動作ルックアップログインかのような問題は、.MAPにある知っていますそして、)赤解決:私はまた、オブジェクトのリストではなく、地図上flatMapを試してみた

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

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

これは()firebase、観察を解決していたよう。

ご協力いただければ幸いです。

答えて

0

getmapの両方の方法からの戻り値が観測可能であるため、jsonではありません。

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

あなたはJSONのようなあなたのdata変数を扱うが、それはありません。したがって、変数は未定義になります。 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