React Native& Firebase:用户信息未存储在数据库中

时间:2017-01-14 17:58:41

标签: javascript firebase react-native redux

我正在尝试创建一个新用户并将他们的信息存储在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))
        })
    }
}

2 个答案:

答案 0 :(得分:0)

问题是你错过了一个子对象,所以你必须在ref之后指定它。如果你也可以发布你的数据库树,但在尝试这个并找出你的孩子之前,会更有帮助。

Location loc = new Location(40.7142408,-73.7785652,29);
driver.setLocation(loc);

答案 1 :(得分:0)

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

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})
            })