在firestore中使用rxjs Observable

在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); } 
}); 
+0

就是这样。谢谢。 –