У меня есть документ Firestore, у которого есть два свойства, и все они являются массивами идентификаторов различных <Game>{}
объектов в другом месте базы данных Firestore.объект, который содержит два отдельных массива элементов, которые представляют эти идентификаторы?
Я не думаю, что есть способ просто иметь один единственный поток объектов, потому что (как только я подпишусь), я не знаю, какой элементпринадлежал к какому массиву, так как размеры массивов не постоянны.
Я новичок в наблюдаемых и rxjs и постоянно читаю о различных операторах, но я застрял здесь и обдумываю реструктуризацию своих данных, если смогуне могу найти решение.
Прямо сейчас у меня есть что-то подобное в моем классе обслуживания, но оно не работает, как я ожидаю, когда я подпишусь на функцию.
getPlayerGames(uid: string) {
return this._db.doc<PlayerGameSession>(`users/${uid}/mygamesession/games`).valueChanges().pipe(
map(gameObj => {
let combined1;
let combined2;
if (gameObj.prop1) {
const prop1Streams = gameObj.prop1.map(
gameId => this._db.doc<Game>(`games/${gameId}`).valueChanges()
);
combined1 = combineLatest(...prop1Streams);
}
if (gameObj.prop2) {
const prop2Streams = gameObj.prop2.map(
gameId => this._db.doc<Game>(`games/${gameId}`).valueChanges()
);
combined2 = combineLatest(...prop2Streams);
}
return combineLatest(combined1, combined2);
}),
switchMap(([c1, c2]) => of({ c1: c1, c2: c2 }))
);
}