Angularfire2 добавить нового пользователя в базу данных

#angular #firebase #firebase-authentication #angularfire2

# #angular #firebase #firebase-аутентификация #angularfire2

Вопрос:

Я использовал следующий метод входа в систему:

 login() {
  this.auth.login();
this.authService.login().subscribe(() => {
  if (this.authService.isLoggedIn) {
      console.log("ADDING THE USER..");
      // Add a new user to the users table
      this.af.child("users").child(this.authService.userData.uid).set({
          provider: this.authService.userData.provider,
            name: this.getName(this.authService.userData)
      });
    // Redirect the user
    this.router.navigate(['/panel']);
  }
});
 

}

Который почти такой же, как метод в документации: https://www.firebase.com/docs/web/guide/user-auth.html#section-storing

Когда я запускаю свое приложение, я получаю следующую ошибку:

 Property 'child' does not exist on type 'AngularFire'.
 

и пользователь не добавляется. Что не так?

Все, что мне нужно, это добавить новый объект в мою базу данных Firebase. Работает следующее, но мне нужна структура, как показано выше:

 this.users = this.af.database.list('/users');
this.users.push("TEST");
 

Итак, как я могу добавить новый пользовательский объект в свою базу данных, используя ту же структуру в https://www.firebase.com/docs/web/guide/user-auth.html#section-storing ? и почему я не могу запустить свой код, если он совпадает с документированным?

Обновить

Мой новый код:

 this.af.database.object('/users/${this.authService.userData.uid}').set({
              provider: this.authService.userData.provider,
                name: this.getName(this.authService.userData)
          });
 
  • Пользователь не вставлен (моя база данных firebase пуста)

Комментарии:

1. github.com/angular/angularfire2/blob/master/docs/…

Ответ №1:

Использовать object() ; дочерний элемент() не существует:

 this.af.database.object(`users/${this.authService.userData.uid}`).set({...})
 

Комментарии:

1. Классный, спасибо. но вы забыли добавить .database после .af . В любом случае, я понятия не имею, почему, но в мою базу данных ничего не добавляется. Обновлен мой код

2. Вы получаете сообщение об ошибке? Ваши правила безопасности в порядке?

3. Я не получаю никакой ошибки. Мои правила таковы: { "rules": { ".read": "true", ".write": "true" } } в моей консоли базы данных firebase я вижу только null

4. Ну, есть проблема с тем, что у меня внутри set , но ошибок вообще нет. в любом случае, я понял. Спасибо.

Ответ №2:

Это более короткая версия.

 import { AngularFireDatabase } from "angularfire2";

...

constructor(private afd: AngularFireDatabase) {}

...

this.afd.object(`users/${this.authService.userData.uid}`).set({...});