如果我注释掉“ lastname:this.newUser.lastName”(从底部起9行),该错误就会消失
我真的很迷住这里。我查看了所有拼写等内容,但似乎仍然可以找出发生这种情况的原因。
话虽这么说,有没有更简单的方法来调试角度类型脚本?我对这个世界还很陌生。
import { Injectable } from '@angular/core';
import { AngularFireAuth } from '@angular/fire/auth';
import { AngularFirestore } from '@angular/fire/firestore';
import { Router } from '@angular/router';
import { ThrowStmt } from '@angular/compiler';
import { BehaviorSubject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class AuthService {
private eventAuthError = new BehaviorSubject<string>("");
eventAuthError$ = this.eventAuthError.asObservable();
newUser: any;
constructor(
private afAuth: AngularFireAuth,
private db: AngularFirestore,
private router: Router) { }
getUserState() {
return this.afAuth.authState;
}
login( email: string, password: string) {
this.afAuth.auth.signInWithEmailAndPassword(email, password)
.catch(error => {
this.eventAuthError.next(error);
})
.then(userCredential => {
if(userCredential) {
this.router.navigate(['/home']);
}
})
}
createUser(user) {
console.log(user);
this.afAuth.auth.createUserWithEmailAndPassword( user.email, user.password)
.then( userCredential => {
this.newUser = user;
console.log(userCredential);
userCredential.user.updateProfile( {
displayName: user.firstName + ' ' + user.lastName
});
this.insertUserData(userCredential)
.then(() => {
this.router.navigate(['/home']);
});
})
.catch( error => {
this.eventAuthError.next(error);
});
}
insertUserData(userCredential: firebase.auth.UserCredential) {
return this.db.doc(`Users/${userCredential.user.uid}`).set({
email: this.newUser.email,
firstname: this.newUser.firstName,
lastname: this.newUser.lastName,
role: 'network user'
})
}
logout() {
return this.afAuth.auth.signOut();
}
}
答案 0 :(得分:0)
该错误消息告诉您,您正在将JavaScript值undefined
作为文档中称为“姓氏”的属性进行传递。 Firestore不接受未定义的值。您将不得不为姓氏分配一些其他值。如果您打算始终使用一个姓氏值,那么在尝试将其写入文档字段或将其完全排除在文档之外之前,应先检查其有效性。