Не удается добавить документ в Firebase

#angular #firebase #angularfire

#angular #firebase #angularfire

Вопрос:

Кто-нибудь сталкивался с такой проблемой, когда вы назначили ссылку на документ в Firebase (которого там еще нет, это всего лишь место), затем поместили туда буквальный объект, и он не появляется?

взаимодействие с firebase.service.ts

 import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import { from, Observable, of } from 'rxjs';
import { User } from '../../classes/user';
import { AngularFireAuth } from 'angularfire2/auth';
import { AngularFirestore} from 'angularfire2/firestore';
import { switchMap } from 'rxjs/operators';

public signup(name: string, surname: string, email: string, password: string, photoUrl: string): Observable<boolean> {
    return from(this.angularFireAuth.auth.createUserWithEmailAndPassword(email, password).then(userCredentials=> {
      const dieBenutzerreferenz = this.angularFirestore.doc(`chatUsers/${userCredentials.user.uid}`);
      const updatedUser = {
        id: userCredentials.user.uid,
        email: userCredentials.user.email,
        name,
        surname,
        photoUrl
      };
      dieBenutzerreferenz.set(updatedUser);
      return true;
    }).catch(
      (error) => false
    ));
  } // end of signup(){}
  

Я работаю над этим со вчерашнего дня, к сожалению, мне не с кем проконсультироваться (я сам создаю первые приложения), и у меня красные глаза. Спасибо.
Я все еще использую AngularFire2, но, несмотря на это, до недавнего времени это работало для меня, а теперь нет.

Я добавлю структуру пользовательского класса, если это поможет.

user.ts

 export class User {
    id: string;
    email: string;
    name: string;
    surname: string;
    photoUrl: string;

    constructor({id, email, name, surname, photoUrl}) {
        this.id = id;
        this.email = email;
        this.name = name;
        this.surname = surname;
        this.photoUrl = photoUrl;
    }
}
  

Ответ №1:

Метод set является async функцией, поэтому вам нужно либо await выполнить его, либо дождаться обещания.