将 rxjs Observable 与 firestore 结合使用
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 方法似乎设置为鸭子类型作为可观察对象。
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); }
});
我正在尝试在 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 方法似乎设置为鸭子类型作为可观察对象。 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); }
});