angular - FirebaseError: Funksjon DocumentReference.set() kalt med ugyldige data. Ustøttet feltverdi: undefined (funnet i felt nombre)
Følgende kode fungerer for å opprette en ny bruker i Firebase, men den gir feilen nedenfor i nettleseren. Kan du hjelpe meg å forstå hvorfor?
Funksjonen DocumentReference.set() ble kalt med ugyldige data. Ugyldig feltverdi: undefined (funnet i feltet nombre)
Kode :
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')
})
}
}
Svar #1
Feilmeldingen forteller deg at feltet kalt "nombre" har JavaScript-verdien undefined på det tidspunktet du prøvde å legge det til et Firestore-dokument. undefined er ikke en gyldig verdi for feltverdier i et Firestore-dokument.
Feilen refererer spesifikt til denne koden:
const user: User = {
uid: resp.user.uid,
nombre: nombre,
email: resp.user.email
}
this.afDB.doc(`${user.uid}/usuario`)
.set(user)
For å fikse dette bør du sørge for at enten:
- nombre har en verdi som ikke er udefinert
- eller fjern det fra objektet som du legger til
