【发布时间】:2019-04-10 22:26:07
【问题描述】:
chat.service.ts:
getUserChats(): Observable<Chat[]> {
return this.auth.currUser
.pipe(
take(1),
flatMap(user => this.afs
.collection('chats', ref => {
console.log(user.uid)
return ref.where('members', 'array-contains', `/users/${user.uid}`);
})
.snapshotChanges()
.pipe(
map(actions => {
return actions.map(action => {
const data = action.payload.doc.data() as Chat;
const id = action.payload.doc.id;
return {id, ...data};
});
})
) as Observable<Chat[]>)
);
}
有没有办法返回保存用户聊天的内部 Observable?
this.afs
.collection('chats', ref => {
console.log(user.uid)
return ref.where('members', 'array-contains', `/users/${user.uid}`);
})
.snapshotChanges()
.pipe(
map(actions => {
return actions.map(action => {
const data = action.payload.doc.data() as Chat;
const id = action.payload.doc.id;
return {id, ...data};
});
})
) as Observable<Chat[]>
在内部 observable 中,我需要等待 user.uid 来查询聊天记录。
【问题讨论】:
-
什么是内部 Observable?
-
@martin Firestore 查询:this.afs.collection('chats' .....
-
只需使用
concatMap而不是flatMap -
还是不行@martin
标签: typescript firebase rxjs google-cloud-firestore observable