Javascript 输入值不为';t save,当按下数组时给出未定义的值
我正在尝试更新firebase中的用户帐户详细信息,但我注意到,即使在我使用console.log时,其中一个字段的输入值仍显示为未定义。我在两个文件中工作,一个是loginjs文件,我在其中定义用户输入Javascript 输入值不为';t save,当按下数组时给出未定义的值,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我正在尝试更新firebase中的用户帐户详细信息,但我注意到,即使在我使用console.log时,其中一个字段的输入值仍显示为未定义。我在两个文件中工作,一个是loginjs文件,我在其中定义用户输入 signUpForm.addEventListener('click', function (e) { e.preventDefault(); isSigningUp = true; var email = signUpEmailInput.value; var password = si
signUpForm.addEventListener('click', function (e) {
e.preventDefault();
isSigningUp = true;
var email = signUpEmailInput.value;
var password = signUpPasswordInput.value;
var displayNameUser = displayNameInput.value;
var userPrivateKey = signUpPrivateKey.value;
var user = firebase.auth().currentUser;
var photoURL = "https://www.gravatar.com/avatar/" + md5(email);
if (signUpPasswordInput.value !== signUpPasswordConfirmInput.value) {
setSignUpError('Passwords do not match!');
} else if (!displayNameUser) {
setSignUpError("Display Name is required!");
} else if (!userPrivateKey) {
setSignUpError('You need to set a Private Key!');
} else {
auth.createUserWithEmailAndPassword(email, password)
.then(function (user) {
user.updateProfile({
displayName: displayNameUser,
photoURL: photoURL,
privateKey: userPrivateKey
}).then(function () {
// Update successful.
window.location.href = 'chat.html';
}).catch(function (error) {
// An error happened.
window.alert("Some unexpected error happened!");
});
user.sendEmailVerification().then(function () {
// Email sent.
}).catch(function (error) {
// An error happened.
window.alert("Email was not able to send!");
});
})
.catch(function (error) {
// Display error messages
setSignUpError(error.message);
});
}});
奇怪的是,我的displayname和photoURL的用户输入工作得很好,但是当涉及到我的私钥用户输入时,它会在进入聊天页面时注册输入,而我做了一个console.log(user.privatekey),它说它是未定义的
在我的chatjs文件中,这是我推送所有用户配置文件信息的时候。chatjs文件基本上允许用户发送消息,消息和所有用户配置文件信息都存储在firebase数据库中
messages.push({
displayName: displayName,
userId: userId,
pic: userPic,
text: myString.toString(),
privatekey: user.privatekey,
timestamp: new Date().getTime() // unix timestamp in milliseconds
})
.then(function () {
messageStuff.value = "";
})
.catch(function (error) {
windows.alert("Your message was not sent!");
messageStuff;
});
问题是privatekey根本没有被存储,这是我不理解的,因为它在loginjs文件中注册用户输入,但当我转到chatjs文件时,它一直说值未定义。我在谷歌搜索了所有地方,但仍然没有找到解决办法。任何帮助都将不胜感激 这是因为您从Firebase接收的Firebase
用户
对象不可自定义。当您调用createUserWithEmailAndPassword(email,password)
方法时,它会将专门定义的用户对象返回给您-
属性
displayName
和photoURL
都可以工作,因为它们已经是返回的用户的属性privateKey
不是Firebase用户对象的现有属性,Firebase不知道如何处理未定义属性的更新调用。查看Frank解释Firebase中的用户不可自定义的地方-您需要单独存储任何额外信息。我知道了,我假设Firebase是可自定义的,不知道,谢谢您的帮助!