【问题标题】:Uncaught Error: Reference.set failed: First argument contains undefined in property 'users.undefined.email'未捕获的错误:Reference.set 失败:第一个参数在属性“users.undefined.email”中包含未定义
【发布时间】:2018-11-04 07:24:29
【问题描述】:

我想将新节点或对象用户保存到 firebase 数据库,但它给了我错误第一个参数包含未定义。 我无法修复此错误。谁能告诉我哪里出错了?

class Authen extends Component {

    login(event) {
        const email = this.refs.email.value;
        const password = this.refs.password.value;
        console.log(email,password);

        const auth = firebase.auth();
        const promise = auth.signInWithEmailAndPassword(email, password);

        promise.catch((e) => {
            var err = e.message;
            console.log("The error is ",err);
            this.setState({err: err});
        });
    }

    signup(event) {
        const email = this.refs.email.value;
        const password = this.refs.password.value;
        console.log(email,password);

        const auth = firebase.auth();
        const promise = auth.createUserWithEmailAndPassword(email,password); 

        promise
        .then(user => {
            var err = "Welcome "+user.email;
            firebase.database().ref('users/'+user.uid).set({
                email: user.email
            });
            console.log("The user is ",user);
            this.setState({err: err});
        });
        promise
        .catch(e => {
            var err = e.message;
            console.log(err);
            this.setState({err: err});
        });
    }

    constructor(props){
        super(props);

        this.state = {
            err: ''
        };
        this.login = this.login.bind(this);
        this.signup = this.signup.bind(this);
    }

    render() {
        return (
            <div>
                <input id="email" ref="email" type="email" placeholder="Enter your email" /><br />
                <input id="pass" ref="password" type="password" placeholder="Enter your password" /><br />
                <p>{this.state.err}</p>
                <button onClick={this.login}>Log In</button>
                <button onClick={this.signup}>Sign Up</button>
            </div>
        );
    }
}

export default Authen;

【问题讨论】:

    标签: reactjs firebase firebase-authentication es6-promise


    【解决方案1】:

    我遇到了这个错误,原因是收到的promise 使用错误。您需要更深入并在 user 对象中使用 emailuid 属性作为响应。

    换句话说,改变

    1. user.emailuser.user.email

    2. user.uiduser.user.uid

      var err = "Welcome "+ user.user.email firebase.database().ref('users/' + user.user.uid).set({ email: user.user.email });

    【讨论】:

      【解决方案2】:

      我遇到了类似的错误,我认为 firebase 有其他错误,并假设您正在通过 .child 导致引用错误。

      尝试将电子邮件设置为字符串,然后重新键入 user.email。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-05
        • 2018-04-26
        相关资源
        最近更新 更多