firebase - 将 rxjs Observable 与 firestore 一起使用

标签 firebase rxjs google-cloud-firestore

我正在尝试在 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 还没有足够的文档让我弄清楚这一点。

最佳答案

当你通过 onSnapshotRx.Observable.create ,您将其传递给未绑定(bind)的查询。也就是说,您只是传递了 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); }
});

关于firebase - 将 rxjs Observable 与 firestore 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46637536/

相关文章:

firebase - 如何将 firestore 子集合导出到 bigquery 表?

swift - 过去 7 天最喜欢的商品?

ios - 聊天消息未正确加载

firebase - 添加自定义托管域 : "Unexpected TXT records found. Continuing to watch for changes."

ios - 初始化变量 : 'self' captured by a closure before all members were initialized

javascript - Angular 7 : Rxjs behaviour subject subscribe not working on page reload but works in route navigation

javascript - RXJS - throttle 时间不 throttle

javascript - 将多个可观察量的结果处理到数据库并添加到数据库一次

javascript - 如何将 limit 和 startAt 应用于 firestore 文档的子项目

flutter - 如何使用 FieldValue.Increment 属性添加单值 Flutter