как получить документ Firebase в качестве модели углового объекта - PullRequest
0 голосов
/ 20 апреля 2019

Я сохраняю идентификатор документа данных профиля пользователя firebase как идентификатор пользователя, теперь я хочу получить текущие зарегистрированные пользовательские данные из коллекции пользователей firebase, используя текущий зарегистрированный идентификатор пользователя, и преобразовать их в объект угловой модели. Я пробовал некоторые методы, но эти методы дают мне ошибки ,

сначала я получаю свой текущий зарегистрированный идентификатор пользователя, используя следующий код

this.afAuth.auth.onAuthStateChanged(user => {
    if (user) {
    this.selectedid = user.uid;

после того, как я создаю объект User и, наконец, назначаю его данным документа firebase, как показано ниже

getnannies() {
    return this.db.collection('nanny').doc(this.selectedid).valueChanges() 
    as Nanny;
}

(Няня - это тип моей модели) затем я пытаюсь получить доступ к данным документа, как показано ниже

nanny:Nanny;
this.nanny = this.serviceClass.getnannies();
console.log(this.nanny.name);

но этот метод дает мне ошибки, и я хочу знать, как это сделать. мой полный код прилагается ниже

это мой сервисный файл

export class GetNannyDetailsService {
selectedid: string;
constructor(private db: AngularFirestore, private afAuth: AngularFireAuth, 
private router: Router) {
}

  parseNanny() {
    this.afAuth.auth.onAuthStateChanged(user => {
      if (user) {
        this.selectedid = user.uid;}});
  }
getnannies() {
    return this.db.collection('nanny').doc(this.selectedid).valueChanges() 
as Nanny;
}

это мой profile.component.ts

export class ProfileComponent implements OnInit {
pronan:Nanny;
constructor(private profile: GetNannyDetailsService) {
}
ngOnInit() {
    this.profile.parseNanny();
    this.pronan = this.profile.getnannies();
    console.log(this.pronan.name);}

это моя няня модель

export interface Nanny {
  email?: string;
  password?: string;
  nannyId?: string;
  name?: string;
  address?: string;
  number?: string;
  gender ?: string;
  town?: string;
  jobType ?: string;
  birthdate?: Date;
  hourlyRate?: number;
  availability?: string;
  bio?: string;
  imgurl?: string;
}

и, наконец, на дисплее консоли "undefined", пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 20 апреля 2019

В служебном файле используется одна функция.

getNanny() {
        let s: Subject<Nany> = new Subject();
            this.afAuth.auth.onAuthStateChanged(user => {
              if (user) {

                  this.db.collection('nanny').doc(user.id).get().subscribe(
                      next => {
                      s.next(next.data())
                      });
               }
            });
            return return s as Observable<Nany>
        }

В файле компонента получить объект, подписавшись на сервисный метод.

pronan:Nanny;
constructor(private profile: GetNannyDetailsService) {
}
ngOnInit() {

    this.profile.getnannies().subscribe(nany=>{
    this.pronan=nany
    consple.log(nany)
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...