如何使Firebase数据在打字稿中仅读取一次

时间:2018-10-03 06:26:57

标签: angular typescript firebase firebase-realtime-database

readProductFromServer() {

    this.qS = this.afDatabase.list('product_table', ref => {

      return ref.limitToLast(1000) ;


    }).snapshotChanges().map(changes => {
      return changes.map(c => ({ key1: c.payload.key, ...c.payload.val() }));
    });
    this.qS.subscribe(values => {

    });
  }

如何使此代码只读一次。我在互联网上搜索并没有得到我的代码的答案,StackOverflow中提供了一些解决方案,但与我的代码不匹配?

1 个答案:

答案 0 :(得分:1)

由于这是一种可观察的方法,因此,如果您只希望一次读取数据并且不获取任何可能更新的新内容,则只需在操作员链中添加take(1)

this.qS = this.afDatabase.list('product_table', ref => {
    return ref.limitToLast(1000) ;
}).snapshotChanges().map(changes => {
    return changes.map(c => ({ key1: c.payload.key, ...c.payload.val() }));
}).take(1);

this.qS.subscribe(values => {

});

首先要发射一次,然后完成可观察的阶段。