У меня есть коллекции групп в моем приложении и пользователи внутри этой группы.я также сохранил групповые идентификаторы в каждом документе пользователя, наоборот.Теперь я хочу получить все созданные мной группы, а также все группы, в которых я нахожусь.
Вот что я сделал до сих пор
const groups = this.afs.collection(`users/${uid}/groups`).snapshotChanges().pipe(
map(actions => actions.map(a => {
const data = a.payload.doc.data();
const customResId = a.payload.doc.id;
return { uid: customResId, ...data };
}))
);
const inGroups = this.afs.collection(`users/${uid}/inGroups`).snapshotChanges().pipe(
switchMap(actions => combineLatest(
actions.map(a => {
const data = a.payload.doc.data();
return this.afs.doc(`users/${data['ownerId']}/groups/${data['groupId']}`).snapshotChanges().pipe(
map(actions => {
const data2 = actions.payload.data();
const customResId = actions.payload.id;
return { uid: customResId, ...data2 };
})
);
})
))
);
const joinedList = combineLatest(groups, inGroups);
return joinedList;
Моя каждая коллекция groups
и inGroups
возвращаются правильноданные, но мне не удалось объединить оба и получить один поток.
вот мой код компонента для получения групп
if (this.user.uid) {
this.groups$ = this.groupService.getAllGroups(this.user.uid)
.pipe(
map(changes => {
return changes.map(a => {
const data = a as any;
Object.keys(data).filter(key => data[key] instanceof Timestamp)
.forEach(key => data[key] = data[key].toDate());
return data;
});
})
);
}
* С приведенным выше кодом это работает, когда у пользователя есть обе коллекции, скажемПользователь создал группы, и он входит в другие группы, если у пользователя есть только коллекция групп, он ничего не возвращает.*
Пожалуйста, помогите.