【问题标题】:angular2 listening for changes with Firebaseangular2 监听 Firebase 的变化
【发布时间】:2017-06-27 19:11:13
【问题描述】:

我是 Firebase 的新手,我想监听数据库中的变化。

这是我尝试过的

constructor(
  private af:AngularFire,
 ){

  this.af.database().ref('registered').on('value', function(snapshot) { //syntax error
    console.log("changed");
  });

  }

如何使用 Firebase 和 angular2 监听变化?

我也尝试在 OnInit 上进行设置

OnInit(){
    this.af.database().ref('registered').on('value', function(snapshot) {
      console.log("changed");
     });

}

并返回错误this.af.database is not a function

【问题讨论】:

    标签: angular typescript firebase angularfire


    【解决方案1】:

    您正在使用带有 Firebase SDK 语法的 Angularfire。

    使用 AngularFire,你必须使用这样的东西:

    import {Observable} from 'rxjs/Observable';
    
    items: Observable<any[]>;
    constructor(af: AngularFire) {
      this.items = af.list('/registered');
    }
    

    如果您只想使用 Firebase sdk,您可以这样做(假设您的项目中有 firebase 文件):

    import firebase from 'firebase';
    constructor(){}
    
    OnInit(){
      firebase.database().ref('registered').on('value', snapshot => {
        console.log('changed');
      })
    }
    

    编辑

    正如评论中所说,可以订阅 observable 以便在其中执行另一个函数。该函数将一直执行,直到 observable 被取消订阅。

    【讨论】:

    • 使用第一个示例,我可以监听更改并调用另一个函数,即 console.log() 就像您在第二个示例中放置的那样
    • 我已经尝试过 af.database().ref('registered').on('value', snapshot => { console.log('changed') 但出现错误无法调用类型缺少调用签名的表达式。
    • 是的,你可以,你只需要订阅它,因为它是一个承诺,然后每次值改变它都会调用订阅中的函数。
    • 它是否说明了错误在哪里?我认为这是因为您将第二个代码与 AngularFire 一起使用,而不是 firebase 本身。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 2020-10-27
    相关资源
    最近更新 更多