因此,在一个文档(register.html)上,我有以下代码:
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// [START_EXCLUDE]
if (errorCode == 'auth/weak-password') {
weakPass.style="color:red;";
}
else {
unexpected.innerHTML=errorMessage;
}
console.log(error);
//Handle Account Status
firebase.auth().onAuthStateChanged(user => {
if(user) {
var user = firebase.auth().currentUser;
var firstname = txtFirst.value;
var lastname = txtLast.value;
var School = dropdown.value;
user.updateProfile({
firstName: firstname,
lastName: lastname,
school: School
}).then(function() {
alert("User: " + user + " Firstname: " + user.firstName + " Lastname: " + user.lastName + " School: " + user.school);
redirect("home.html");
});
//After successful login, user will be redirected to home.html
}
});
实际上,尽管用户确实使用连接到Firebase网站的电子邮件和密码进行注册,并成功将网站重定向到home.html,但我认为它实际上并未向用户添加数据“个人资料”。
我在home.html上有以下代码,以尝试提取数据:
//Handle Account Status
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
var firstname = user.firstName;
var lastname = user.lastName;
var school = user.school;
alert("User: " + user + " Firstname: " + firstname + " Lastname: " + lastname + " School: " + school);
} else {
// User is signed out.
}
});
但是,这不起作用。 user 的值为true,但是在调用 alert 时,警报返回 undefined 。警报准确显示了这一点: “用户:[object Object]名:undefined姓:undefined学校未定义”
我在做什么错?是否有其他/更好的方法使用Firebase存储用户数据? 我为用户存储的唯一数据是他们的名字,姓氏和学校,以及显而易见的电子邮件和密码,因为它确实起作用。
说实话,我不知道我设置数据,提取数据或如何测试的方式是否有问题。
答案 0 :(得分:0)
根据guides
您可以更新用户的基本个人资料信息-用户的显示 名称和个人资料照片的网址-使用updateProfile方法。
因此,您只能使用updateProfile()
和displayName
来更改photoUrl
的值。无法向用户添加任意配置文件字段。相反,您将需要在数据库中存储有关用户的其他信息,例如Cloud Firestore。如果您想了解有关Cloud Firestore的更多信息,此代码实验室是一个很好的起点。