DocumentReference.set () вызван с неверными данными.Неподдерживаемое значение поля: не определено - PullRequest
0 голосов
/ 03 октября 2018

Я работаю над этой регистрацией с помощью firebase и сохраняю данные о пользователях в firestore.

Мне удалось успешно зарегистрировать пользователя, но когда я добавляю данные в базу данных, я получаю сообщение об ошибкена одном из полей.не определено.Когда я пытаюсь без поля catchPhrase, это работает.

Вот мой код: auth.service.ts

    emailSignUp(email: string, password: string) {
return this.afAuth.auth
  .createUserWithEmailAndPassword(email, password)
  .then(credential => {
    this.customSetUSerData(credential.user);
  })
  .catch(error => {
    console.log(error);
  });
}
customSetUSerData(user: User) {
const userRef: AngularFirestoreDocument<any> = this.afs.doc(`users/${user.uid}`);
const userData: User = {
  uid: user.uid,
  email: user.email,
  displayName: user.displayName,
  catchPhrase: user.catchPhrase
}; // photoURL: user.photoURL,
return userRef.set(userData).catch(err => console.log(err));
}

Вот здесь register.component.html

      ngOnInit() {
this.signUpForm = this.fb.group({
  email: ['', [Validators.required, Validators.email]],
  password: [
    '',
    [
      Validators.pattern('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$'),
      Validators.minLength(6),
      Validators.maxLength(25),
      Validators.required
    ]
  ],
  region: ['', []],
  catchPhrase: ['', [Validators.required]],
  photoUrl: []
});
   }

  get email() {
return this.signUpForm.get('email');
   }
   get password() {
return this.signUpForm.get('password');
   }

  get catchPhrase() {
return this.signUpForm.get('catchPhrase');
  }
   get photoUrl() {
return this.signUpForm.get('photoUrl');
  }
  signup() {
// console.log(this.email.value + this.password.value + this.catchPhrase.value);
return this.auth.emailSignUp(this.email.value, this.password.value);
  }
 }

И вот ошибка:

Ошибка: функция DocumentReference.set () вызвана с недопустимыми данными.Неподдерживаемое значение поля: не определено (найдено в поле catchPhrase)

1 Ответ

0 голосов
/ 03 октября 2018

Сообщение об ошибке является довольно явным: вы пытаетесь установить для поля catchPhrase значение undefined, которое не является допустимым значением.

Это происходит в следующем коде:

catchPhrase: user.catchPhrase

Так что, похоже, user.catchPhrase - это undefined.Это имеет смысл, так как у пользователя Firebase Authentication нет свойства catchPhrase.Вы, вероятно, хотите передать какую-то броскую фразу, которую пользователь ввел / выбрал в ваш код, и в этом случае вы должны передать его в качестве отдельного параметра или посмотреть его так:

catchPhrase: catchPhrase

Это вызовет ваш(только для чтения) метод получения свойства catchPhrase:

get catchPhrase() {
  return this.signUpForm.get('catchPhrase');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...