观察更改打字稿的firebase数据库

Posted

技术标签:

【中文标题】观察更改打字稿的firebase数据库【英文标题】:Observe firebase database on changes typescript 【发布时间】:2018-08-12 17:24:10 【问题描述】:

所以我在这样的角度服务中调用我的 firebase 实时数据库:

readItems() 
    return this.af.database.ref(`/path`)
      .on('value', snap => this.callback(snap.val()));
  

回调只是根据我的需要修改响应。我需要做的是在我调用readItems 的组件中获取修改后的数据。这是所述组件中的调用:

this.service.readItems();

我想知道何时完成并使用带有subscribethen 的可观察或承诺返回修改后的响应。我不知道如何做到这一点,任何帮助都会很棒。

【问题讨论】:

【参考方案1】:

您可以在传递给on 函数的回调中使用来自 rxjs 的 Subject 并订阅它:

valueChanged$ = new Subject();

callback(val) 
    // some code ...
    valueChanged$.next(val); // pass whatever you need to receive in the subscription


readItems() 
  return this.af.database.ref(`/path`)
    .on('value', snap => this.callback(snap.val()));

然后在您的代码中:

this.valueChanged$.subscribe(data => doStuff(data));
this.service.readItems();

【讨论】:

这不起作用,因为 firebase.database().ref().on 不返回可观察的。见这里:firebase.google.com/docs/reference/js/… 太棒了,成功了!如果您不介意,在主题变量末尾添加 $ 的原因是什么,只是常见做法? 太棒了! $ 符号只是使用流和可观察对象时的约定。它让正在阅读代码的人清楚地知道它是一个流。 我很高兴它有效!你也会考虑投票吗? 感谢@BorisLobanov,您的回答也帮助了我,点赞:)

以上是关于观察更改打字稿的firebase数据库的主要内容,如果未能解决你的问题,请参考以下文章

TYPO3:powermail 从带有打字稿的自己的扩展中选择数据

带有打字稿的角度材料设计

通过打字稿的界面来反应状态[重复]

带有打字稿的枚举

带有打字稿的 Angular 5 websocket 示例

带有打字稿的MongoDB聚合