什么是firestore中的snapshotchanges

时间:2018-02-04 13:53:01

标签: angular firebase google-cloud-firestore angularfire2

此函数由构造函数调用。有人可以向我深入解释它的作用吗?

  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
  });

}

3 个答案:

答案 0 :(得分:9)

是火灾收集的现状。它返回一个Observable数据。 您可以在希望能够将元数据作为documentID获取时使用它,而不是使用例如valueChanges(),它返回仅包含保存在文档中的数据的Observable。它不包含元数据。

这意味着您通常会在需要元数据时使用valueChanges()来获取数据和snapshotChanges(),例如。删除或更新文件。

您的代码基本上获取文档的数据和元数据,并从中提取数据。然后它将数据反转为从集合的结尾到开头。

答案 1 :(得分:0)

由于该函数是异步的,因此在继续下面的其余代码之前,它不会等待完成。因此,console.log(travelArray)甚至在接收数据之前就运行。 (没有检查下面的语法错误)

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

答案 2 :(得分:-1)

将observable推入数组会做类似的事情。

let travelArray = [];
this.travelList$.subscribe(res => {
  res.map(c => {
    travelArray.push(c);
  })
})
console.log(travelArray);