首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当将输入值推到数组上时,输入值不保存。

当将输入值推到数组上时,输入值不保存。
EN

Stack Overflow用户
提问于 2018-06-25 21:06:32
回答 1查看 272关注 0票数 1

我试图在firebase中更新用户帐户的详细信息,但是我注意到,我的一个字段的输入值一直是未定义的,即使我console.log它。我在两个文件中工作,一个是loginjs文件,在其中定义用户输入。

代码语言:javascript
复制
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文件基本上允许用户发送消息,消息和所有用户配置文件信息存储在firebase数据库中。

代码语言:javascript
复制
            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;
        });

问题是私钥根本没有存储,这是我所不理解的,因为它是在loginjs文件中注册用户输入,但是当我转到chatjs文件时,它一直说值是undefiend的。我已经搜索了所有地方,但我仍然没有找到解决办法。任何帮助都是非常有用的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-25 21:28:46

这是因为从Firebase接收到的Firebase user对象是不可自定义的。当您调用createUserWithEmailAndPassword(email, password)方法时,它将一个特定定义的用户对象返回给您- 检查此对象的属性的文档。

属性displayNamephotoURL都可以工作,因为它们已经是返回的用户的属性。privateKey不是Firebase用户对象的现有属性,而且Firebase不知道如何处理未定义的属性的更新调用。看看这个问题和答案,弗兰克解释说,Firebase中的用户是不可定制的--您需要单独存储任何额外的信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51031793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档