#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
выполнить его, либо дождаться обещания.