【问题标题】:React Native & Firebase : user info not being stored in databaseReact Native & Firebase:用户信息未存储在数据库中
【发布时间】:2017-05-29 22:06:56
【问题描述】:

我正在尝试创建一个新用户并将他们的信息存储在 firebase 数据库中。我成功创建了用户,但用户信息没有存储在 firebase 中。

正在运行的函数是handleAuthWithFirebase

console.log("Storing user") 出现在控制台中,所以我不确定为什么 firebase.database().ref().set 没有运行。

这是我的代码

export function handleAuthWithFirebase (newUser) {
    return function (dispatch, getState) {
        dispatch(authenticating());

        console.log(newUser);
        console.log('Signing up user');
        var email = newUser.email;
        var password = newUser.password;

        firebase.auth().createUserWithEmailAndPassword(email, password).catch(error => {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
        }).then(() => {

            const user = firebase.auth().currentUser;
            // Set user in Firebase
            console.log("Storing user")
            firebase.database().ref('/users/' + user.uid).set({
                name: newUser.displayName,
                username: newUser.username,
                email: newUser.email
            })
        }).then(() => {
            const user = firebase.auth().currentUser;
            dispatch(isAuthed(user.uid))
        })
    }
}

【问题讨论】:

    标签: javascript firebase react-native redux


    【解决方案1】:

    问题是您缺少一个子对象,因此您必须在 ref 之后指定它。如果您也可以发布数据库树会更有帮助,但在尝试此之前找出您的孩子。

         firebase.database().ref('myRef').child('myChild').set({
                    name: newUser.displayName,
                    username: newUser.username,
                    email: newUser.email
         })
    

    【讨论】:

    • 我试过firebase.database().ref('/users/').child(user.uid).set(),但也没有用。
    【解决方案2】:

    对于那些看到这篇文章的人来说,这就是我的工作。

    firebaseApp.auth()
                .createUserAndRetrieveDataWithEmailAndPassword(this.state.email, this.state.password)
                .then(response => {
    
                    firebaseApp.database().ref('users').child(response.user.uid).set({
                        firstName: this.state.firstName,
                        lastName: this.state.lastName,
                        username: this.state.username,
                        email: this.state.email
                    });
    
                    response.user.sendEmailVerification().then(response => {
                        AlertIOS.alert('Message', 'Sending email verification to '+this.state.email)
                    });
                    this.setState({authenticating: false})
                }, error => {
                    AlertIOS.alert('Error', error.message);
                    this.setState({authenticating: false})
                })

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      • 2023-03-31
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 2017-05-07
      相关资源
      最近更新 更多