繁体   English   中英

使用带有firestore的rxjs Observable

[英]Using an rxjs Observable with firestore

我试图在Query#onSnapshot方法上创建一个rxjs observable。 这是我的代码:

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方法被设置为duck-typed作为observable。 Firestore还没有足够的文档供我解决。

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); }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM