Я бы атаковал немного иначе, но, основываясь на вашем запросе, самое простое изменение было бы:
return this.afs.doc(`meals/${meal.id}`)
.collection('pending', ref => ref.where('uid', '==',
this.authService.getUserID()))
.valueChanges()
.pipe(switchMap(docs => of(docs.length > 0)));
- или -
return this.afs.doc(`meals/${meal.id}`)
.collection('pending', ref => ref.where('uid', '==',
this.authService.getUserID()))
.valueChanges()
.pipe(map(docs => docs.length > 0));
- или если вы нужно вернуть обещание наблюдаемой -
async myFunc() : Promise<boolean> {
const hasRecords = await this.afs.doc(`meals/${meal.id}`)
.collection('pending', ref => ref.where('uid', '==',
this.authService.getUserID()))
.valueChanges()
.pipe(map(docs => docs.length > 0)).toPromise();
return hasRecords;
}