AngularFire听孩子补充说

时间:2018-05-02 09:43:33

标签: javascript angular firebase firebase-realtime-database angularfire2

我想做的只是听child_added事件只接收最后一个孩子。 我们的想法是启动一个角度应用程序(appA),将ref创建到列表然后等待。

从其他应用程序(appB),我可以在该列表中添加项目。

我希望appB对appB添加的项目做出一次反应

this.itemsRef = this.db.list('gpsAlerts');

this.itemsRef.snapshotChanges(['child_added'])
  .subscribe(actions => {
    actions.forEach(action => {
      console.log(action.type);
      console.log(action.key);
      console.log(action.payload.val());
    });
  });

但是我已经收到appA发布时列表中的所有项目。 而且,当我从appB添加项目时,该方法被多次调用。 我希望能够获得最后一项。

我有什么想法可以做到吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

由于您订阅了snapshotChanges,如果您不希望多次调用它,则可以使用RxJS debounceTime()

所以在你的情况下,它看起来像:

...
import 'rxjs/add/operator/debounceTime';
...

this.itemsRef.snapshotChanges(['child_added'])
  .debounceTime(500)
  .subscribe(actions => {
    actions.forEach(action => {
      console.log(action.type);
      console.log(action.key);
      console.log(action.payload.val());
    });
  });

然后subscribe的范围将仅在最后一次通话后500ms解释。