При попытке создать документ Firestore с помощью AngularFire страница зависает - PullRequest
0 голосов
/ 10 июля 2020

У меня есть приложение, в котором используются Angular 10.0.3, AngularFire 6.0.2 и Firebase 7.16. Мой код для регистрации нового пользователя определенно работал, но я только заметил, что этого больше нет, несмотря на отсутствие изменений в коде. Я недавно обновился до AngularFire 6 и Angular 10, поэтому подозреваю, что это как-то связано с этим. Страница зависает, и я не получаю сообщений об ошибках на вкладке консоли или сети, поэтому я понятия не имею, в чем проблема, кроме того, что кажется, когда я пытаюсь добавить новый документ в существующий companies коллекция.

Ниже представлена ​​упрощенная версия моего регистрационного кода. У меня есть операторы журнала консоли в методах then и catch, но ни один из них не попадает. Я подтвердил, что есть значения как для companyName, так и companyId, так что это не проблема передачи undefined или чего-то еще. Вызывается метод createCompany, для объекта newCompany устанавливаются допустимые данные, и они успешно регистрируются в консоли, но как только он попадает в возврат, где пытается создать новый документ Firestore, он зависает, а база данных не работает. обновлено. Мое чутье подсказывает мне, что я использую устаревший код или что-то в этом роде, но не могу понять где.

register.component.ts:

import { AuthService } from '../../services/auth.service';
import { AngularFirestore } from '@angular/fire/firestore';

...

constructor(
    private afs: AngularFirestore,
    private authService: AuthService,
) {}

async registerUser() {
    if (!this.form.valid) {
        return;
    }

    const { companyName } = this.form.value;
    const companyId = this.afs.createId();
    this.authService
        .createCompany(companyId, companyName)
        .then(() => { ... })
        .catch(() => { ... });
}

auth.service.ts:

import { AngularFirestore } from '@angular/fire/firestore';

... 

constructor(
    private afs: AngularFirestore,
) {}

createCompany(id: string, name: string) {
    const newCompany = { ... };
    console.log('id', id);
    console.log('newCompany', newCompany);


    return this.afs
        .collection<Company>('companies')
        .doc(id)
        .set(newCompany);
}

Я тоже пробовал return this.afs.collection<Company>('companies').add(newCompany); и получил тот же результат.

...