创建帐户后,React Native Firebase会写入用户数据

时间:2017-11-14 08:54:41

标签: firebase react-native firebase-realtime-database firebase-authentication

我目前正在使用Firebase和React Native我遇到了一个小问题。

阅读documentation for the: createUserWithEmailAndPassword

  

成功创建用户帐户后,该用户也将登录您的应用程序。

我试图按照以下方式处理承诺:

firebase.auth().createUserWithEmailAndPassword(this.state.email, this.state.password)
.then(function(authData){
    this.writeUserData(authData.uid);
}).catch(function(error){
    console.warn(error)
});

我的writeUserData()方法:

writeUserData(the_uid) {
    console.warn("Writting data ")
    var today = new Date();
    firebase.database().ref('users/' + authData.uid + '/').set({
        name: this.state.name,
        birthday: this.state.date,
        email: this.state.email,
        registered: today
    });
}

在函数中,console.warn永远不会被触发,因此事件未被触发,因为用户自动登录。

问题:由于用户已立即登录,因此.then尚未执行。

目标:在用户创建之后,您可以在登录前添加用户信息(姓名,生日等)。

2 个答案:

答案 0 :(得分:2)

好的,了解你,问题似乎是你在.then语句中定义函数的方式。你应该使用箭头功能,就像这样 -

firebase.auth().createUserWithEmailAndPassword(this.state.email, this.state.password)
    .then((authData) => {
        this.writeUserData(authData.uid);
    }).catch(function(error){
        console.warn(error)
    });

答案 1 :(得分:0)

我所理解的是你正试图将(名字,生日等)推送到firebase,以及我使用firebase的小经验,你必须调用{firebase.database()。ref()。child('你的路径')}首先创建一个路径,然后使用push(),例如:

{var ref = firebaseRef.database()。ref()。child('Clients');         var ref = ref.push(this.state.username); }

好吧,我是新手,但这对我有用,希望对你有帮助