在firestore中使用rxjs Observable
问题描述:
我试图在Query#onSnapshot方法上创建一个rxjs observable。这是我的代码:在firestore中使用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)}})
我收到的错误是这样的:
类型错误:this.onSnapshotInternal不是一个函数
看来,onSnapshot方法设置为鸭类型为一个可观察的。 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); }
});
就是这样。谢谢。 –