доступ к базе данных в реальном времени в onAuthStateChanged - PullRequest
0 голосов
/ 28 апреля 2018

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

signUpBrother(email: string, password: string) {
  this.fireAuth.auth.createUserWithEmailAndPassword(email, password)

  this.fireAuth.auth.onAuthStateChanged(function(user) {
    this.firebase.list('brothers').set(uid, {
      'email': user.email,
      'nickname': 'nickname',
      'avatar': 'avatar',
      'is_big_brother': true
    })
  })
}

ошибка, которую я получаю:

ОШИБКА Ошибка: Uncaught (в обещании): TypeError: Невозможно прочитать свойство 'firebase' из неопределенного

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 28 апреля 2018

Как прокомментировал codtex this имеет другое значение в обратном вызове, чем за его пределами. А новый this не имеет свойства firebase.

Чтобы убедиться, что вы можете получить доступ к своей функции, вы можете захватить this под другим именем:

signUpBrother(email: string, password: string) {
  this.fireAuth.auth.createUserWithEmailAndPassword(email, password)

  var that = this;    
  this.fireAuth.auth.onAuthStateChanged(function(user) {
    that.firebase.list('brothers').set(uid, {
      'email': user.email,
      'nickname': 'nickname',
      'avatar': 'avatar',
      'is_big_brother': true
    })
  })
}
...