Я хочу преобразовать свой старый угловой код во флаттер. Как я могу вставить вложенный запрос в флаттер, этот код работает, но я не могу найти вложенный запрос для флаттера
this.MatchCollection = this.afs.collection<Matches>('matches',
ref => ref.where('match', 'array-contains', this.curId).where('status', '==', true));
this.matchcombine = this.MatchCollection.snapshotChanges().pipe(map(actions => {
return actions.map(a => {
const data = a.payload.doc.data() as Matches;
const uid = this.curId === data.match[0] ? data.match[1] : data.match[0];
const id = a.payload.doc.id;
const username = this.afs.collection<User>(`users`).doc(uid).valueChanges();
const messagesanddate = this.afs.collection<Messages>(`matches`).doc(id).collection(`chat`,
ref => ref.orderBy('date', 'desc').limit(1)).valueChanges();
const notReadedCount = this.afs.collection(`matches`).doc(id).collection(`chat`,
ref => ref.where('muid', '==', uid).where('readed', '==', false)).valueChanges();
const combinedData = combineLatest(username, messagesanddate, notReadedCount,
(data1, data3, data4) => {
return {...data1, ...data3[0], count: data4.length};
});
return combinedData.pipe(map(datam => Object.assign({}, {id, ...datam, ...data})));
});
}), mergeMap(observables => {
return observables.length > 0 ? combineLatest(observables) : of([]);
}), tap(m => {
if (m.length > 0) {
return m.sort((a, b) => {
const aD = a.date ? a.date.toDate() : a.matchDate.toDate();
const bD = b.date ? b.date.toDate() : b.matchDate.toDate();
return bD < aD ? -1 : 1;
});
} else {
return m;
}
}));