【问题标题】:Using an rxjs Observable with firestore将 rxjs Observable 与 firestore 一起使用
【发布时间】:2018-03-20 03:17:21
【问题描述】:

我正在尝试在 Query#onSnapshot 方法上创建一个可观察的 rxjs。这是我的代码:

let observable = Rx.Observable.create(db.collection('conversations')
     .where('members.' + auth.currentUser.uid, '==', true).onSnapshot)
observable.subscribe({next(value){console.log('value', value)}})

我收到的错误是这样的:

TypeError: this.onSnapshotInternal 不是函数

似乎 onSnapshot 方法被设置为鸭子类型作为可观察对象。 Firestore 还没有足够的文档让我弄清楚这一点。

【问题讨论】:

    标签: firebase rxjs google-cloud-firestore


    【解决方案1】:

    当您将onSnapshot 传递给Rx.Observable.create 时,您将它未绑定地传递给查询。也就是说,您只是传递了Query.prototype.onSnapshot 函数。

    你可以使用bind,像这样:

    const query = db
      .collection('conversations')
      .where('members.' + auth.currentUser.uid, '==', true);
    let observable = Rx.Observable.create(query.onSnapshot.bind(query));
    observable.subscribe({
      next(value) { console.log('value', value); }
    });
    

    或者可以使用箭头函数,像这样:

    let observable = Rx.Observable.create(observer => db
      .collection('conversations')
      .where('members.' + auth.currentUser.uid, '==', true)
      .onSnapshot(observer)
    );
    observable.subscribe({
      next(value) { console.log('value', value); }
    });
    

    【讨论】:

    • 就是这样。谢谢。
    猜你喜欢
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    • 2023-04-02
    • 2018-07-08
    • 2018-12-25
    相关资源
    最近更新 更多