我正在尝试在 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 还没有足够的文档让我弄清楚这一点。
最佳答案
当你通过 onSnapshot
至Rx.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/