Я пытаюсь зачитать данные из Firebase, где простым запросом я извлекаю организацию по указанному имени.
Проблема, с которой я сталкиваюсь, заключается в том, что запрос работает нормально, а данные извлекаются но в потоке выполнения лог c, где считываются фактические данные, запускается слишком поздно.
Я думаю, это относится к тому, как я работаю с Observables, но я действительно застрял.
Вот мой код:
async getOneOrganizationByName(name: string) {
console.log("2. Doing the check");
const query = this.afs.collection<Organization>('organizations', ref => ref.where('name', '==', name).limit(1));
return query.snapshotChanges().pipe(
debounceTime(500),
take(1),
map(
changes => {
return changes.map(a => {
const data = a.payload.doc.data() as Organization;
data.id = a.payload.doc.id;
console.log("3. From the check logic: " + data.name);
return data;
});
}
)
);
}
async nameExists(name: string) {
if(_.isNil(name)) {
return false;
}
console.log("1. Before the check");
let foundName: string;
(await this.getOneOrganizationByName(name)).subscribe((organizations: Organization[]) => {
foundName = organizations[0].subdomain;
console.log("4. Set item: " + organizations[0].subdomain);
});
console.log("5. Found item: " + foundName);
if(_.isNil(foundName)) {
console.log("6. return false")
return false;
}
console.log("6. return true")
return true
}
Из приведенного выше кода я ожидал бы см. в выводе консоли: 1, 2, 3, 4, 5, 6 с соответствующими сообщениями, но я получаю 1, 2, 5, 6, 3, 4 .
Как можно Я заверяю блокировку выполнения логи c до считывания данных?