FirebaseError: Функция DocumentReference.set () вызвана с неверными данными. Неподдерживаемое значение поля: не определено (найдено в поле nombre) - PullRequest
1 голос
/ 07 января 2020

Следующий код работает для создания нового пользователя в Firebase, но в браузере выдает приведенную ниже ошибку. Не могли бы вы помочь мне понять, почему?

Функция DocumentReference.set () вызвана с неверными данными. Неподдерживаемое значение поля: не определено (найдено в поле nombre)

r

Код:

export class AuthService {

  private userSubscription: Subscription = new Subscription();

  constructor(private afAuth: AngularFireAuth,
    private router: Router,
    private afDB: AngularFirestore,
    private store: Store<AppState>) { }

initAuthListener() {

    this.afAuth.authState.subscribe((fbUser: firebase.User) => {
      if (fbUser) {
        this.userSubscription = this.afDB.doc(`${fbUser.uid}/usuario`).valueChanges()
          .subscribe((usuarioObj: any) => {

            const newUser = new User(usuarioObj)

            this.store.dispatch(new SetUserAction(newUser))

          })
      } else {
        this.userSubscription.unsubscribe()
      }
    })
  }

  createUser(nombre: string, email: string, password: string) {

    this.store.dispatch(new ActivarLoadingAction())

    this.afAuth.auth
      .createUserWithEmailAndPassword(email, password)
      .then(resp => {


        const user: User = {
          uid: resp.user.uid,
          nombre: nombre,
          email: resp.user.email
        }

        this.afDB.doc(`${user.uid}/usuario`)
          .set(user)
          .then(() => {

            this.router.navigate(['/'])
            this.store.dispatch(new DesactivarLoadingAction())
          })


      })
      .catch(erro => {
        console.error(erro)
        this.store.dispatch(new DesactivarLoadingAction())
        Swal.fire('Error!', erro.message, 'error')
      })
  }


}

1 Ответ

2 голосов
/ 07 января 2020

В сообщении об ошибке сообщается, что поле с именем "nombre" имеет значение JavaScript undefined в то время, когда вы пытались добавить его в документ Firestore. undefined не является допустимым значением для полей документа Firestore.

Ошибка относится именно к этому коду:

    const user: User = {
      uid: resp.user.uid,
      nombre: nombre,
      email: resp.user.email
    }

    this.afDB.doc(`${user.uid}/usuario`)
      .set(user)

Чтобы исправить это, вы должны убедиться, что либо:

  1. nombre имеет значение, которое не является неопределенным
  2. или удалите его из объекта, который вы добавляете
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...