web-dev-qa-db-ja.com

Firestoreのスナップショット変更とは

この関数はコンストラクターによって呼び出されます。誰かが私にそれが何をするかを詳細に説明できますか?

  initializeItems(){
this.travelList$ = this.plsdala.getTravelList()
.snapshotChanges()
.map(
  changes => {
    return changes.map(c=>({
      key: c.payload.key, ...c.payload.val()
    })).slice().reverse();

   //to reverse order
  });

}
11
Jennica

ファイヤーストア収集の現状です。データのObservableを返します。たとえば、ドキュメントのみに保存されたデータを含むObservableを返すvalueChanges()を使用するのではなく、documentIDとしてメタデータも取得できるようにしたい場合はいつでも使用します。メタデータは含まれません。

これは、メタデータが必要になる可能性がある場合はいつでも、通常はvalueChanges()を使用してデータとsnapshotChanges()を取得することを意味します。ドキュメントの削除または更新。

コードは基本的にドキュメントのデータとメタデータを取得し、そこからデータのみを抽出します。次に、データを逆にして、コレクションの最後から最初に移動します。

9
Robo Bayer

関数は非同期であるため、以下のコードの残りの部分を続行する前に、完了するのを待ちません。そのため、データが受信される前でもconsole.log(travelArray)が実行されます。 (以下の構文エラーをチェックしませんでした)

let travelArray = [];
this.travelList$.subscribe(res => {
  res.map(c => {
    travelArray.Push(c);
  })
})
.subscribe((a: travelArray) => {
       console.log(a);
      }, error => {
      });
0
Pat