12

現在、Angular 2 と angularFire2 を使用したプロジェクトに取り組んでいます。私のデータベースは Firebase で次のようになります: base:/data

[{Name:test1},
{Name:test2},
{Name:test3}]

すべてのアイテムには Firebase キーもあります。

今、RX の Observabels を使用して Firebase からデータを取得しようとしています。これを行うと、コンソールに名前が表示されます。

let items= af.database.list('/data').map(i=>{return i});
items.forEach(i=>i.forEach(e=>(console.log(e.name))));

出力: テスト 1、テスト 2、テスト 3。すべてが機能します。

しかし、私がこれを行うとき:

console.log(items.first());

FirebaseListObservable が返されます。

FirebaseListObservable から最初のオブジェクトのみを取得するにはどうすればよいですか? リスト内の項目を編集するにはどうすればよいですか? お気に入り:

items[0].name=test3

そして、アイテムからFirebaseキーを取得するにはどうすればよいですか

リスト内の項目から firebaseKey を取得するにはどうすればよいですか?

4

1 に答える 1

16

ObservablesObservableは非同期データ構造です。つまり、データがいつ利用可能になるかは実際にはわかりませんnext

items.first().subscribe(x => console.log(x.name));

さらに、 anObservableは静的ではないため、そのようにインデックス付けすることはできません。最初の項目だけが必要な場合は、代わりに値を抽出して ++ の組み合わせで変更することをお勧めflatMapしますfirstmap

af.database.list('/data')
  //Convert array into Observable and flatten it
  .flatMap(list => list)
  //Get only the first item in this list
  .first()
  //Transform the value
  .map(({name, firebaseKey}) => ({name: "test3", firebaseKey}))
  //Subscribe to the stream
  .subscribe(x => console.log(x));
于 2016-07-08T19:14:57.100 に答える