Angular Firebase-Reference.set失败:第一个参数在属性';users.undefined.uid';

Angular Firebase-Reference.set失败:第一个参数在属性';users.undefined.uid';,angular,firebase,Angular,Firebase,我目前正在学习Angular,这本书名为《Angular 5和Firebase的全堆栈开发实践》。我已经阅读了这本书,但当我单击“注册”按钮时,当前遇到了一个错误。但是,用于注册的电子邮件和密码将显示在“身份验证”选项卡中 我知道userInfo.uid没有返回uid,但我不知道为什么,因为我完全按照这本书教给我的内容来做。我甚至在网上看过源代码,但似乎不知道为什么 注册.component.ts onSignup(signupFormData): void { this.authSer

我目前正在学习Angular,这本书名为《Angular 5和Firebase的全堆栈开发实践》。我已经阅读了这本书,但当我单击“注册”按钮时,当前遇到了一个错误。但是,用于注册的电子邮件和密码将显示在“身份验证”选项卡中

我知道userInfo.uid没有返回uid,但我不知道为什么,因为我完全按照这本书教给我的内容来做。我甚至在网上看过源代码,但似乎不知道为什么

注册.component.ts

onSignup(signupFormData): void {
    this.authService.signup(signupFormData.value.email, signupFormData.value.password).then((userInfo) => {
        // Register the new user
        const user: User = new User(signupFormData.value.email,
            signupFormData.value.name, signupFormData.value.mobile, userInfo.uid, 0, '');
        this.writeNewUser(user);
        this.navigateToUserProfile();
    }).catch((error) => {
        this.showError = true;
        this.errorMessage = error.message;
    });
}

private writeNewUser(user: User): void {
    this.userService.addUser(user);
}
public addUser(user: User): void {
    this.fireDb.object(`${USERS_CHILD}/${user.uid}`).set(user);
}
user.service.ts

onSignup(signupFormData): void {
    this.authService.signup(signupFormData.value.email, signupFormData.value.password).then((userInfo) => {
        // Register the new user
        const user: User = new User(signupFormData.value.email,
            signupFormData.value.name, signupFormData.value.mobile, userInfo.uid, 0, '');
        this.writeNewUser(user);
        this.navigateToUserProfile();
    }).catch((error) => {
        this.showError = true;
        this.errorMessage = error.message;
    });
}

private writeNewUser(user: User): void {
    this.userService.addUser(user);
}
public addUser(user: User): void {
    this.fireDb.object(`${USERS_CHILD}/${user.uid}`).set(user);
}

在addUser函数中,如果您使用的是Firebase实时数据库,则可以按如下方式插入新用户:

const userObject ={"eamil":email, "createDate":'xxxx',....}
admin.database().ref('/users').child(uid).set(userObject)
如果您使用的firestore更改代码如下:

firestore.collection('users').doc(userId).set(userObject);

在addUser函数中,如果您使用的是Firebase实时数据库,则可以按如下方式插入新用户:

const userObject ={"eamil":email, "createDate":'xxxx',....}
admin.database().ref('/users').child(uid).set(userObject)
如果您使用的firestore更改代码如下:

firestore.collection('users').doc(userId).set(userObject);

你有控制台.log(signupFormData.value)吗,我猜电子邮件或密码在未定义和firebase不能插入未定义为电子邮件address@MH-不,电子邮件和密码都没有问题。我可以看到这两个值。你可以在writeNewUser函数上发布代码吗?那边发生了一些事情。请执行console.log('userInfo.uid',userInfo.uid)和console.log('user',user),此.writeNewUser(user);@MH Li我已经编辑了我的帖子并添加了所需的代码您使用firebase实时数据库还是firestore?您使用console.log(signupFormData.value)了吗,我猜电子邮件或密码在未定义和firebase不能插入未定义为电子邮件address@MH-不,电子邮件和密码都没有问题。我可以看到这两个值。你可以在writeNewUser函数上发布代码吗?那边发生了一些事情。请执行console.log('userInfo.uid',userInfo.uid)和console.log('user',user),这之前的一行。writeNewUser(user);@MH Li我已经编辑了我的帖子并添加了所需的代码。您使用firebase实时数据库还是firestore?