将react-native连接到Firebase和mysql

时间:2018-12-14 15:57:26

标签: mysql firebase react-native

我正在使用react-native开发应用程序。我可以轻松地将本机应用程序连接到Firebase。我的想法是使用Firebase身份验证,但要使用MySQL数据库中的数据。 使用firebase和mysql的最佳/正确方法是什么?

我的想法是使用react-native到mysql的ajax请求,以便针对进入我的MySQL数据库的数据验证用户名和密码。然后使用此请求返回的ID从Firebase创建或加载用户。这是正确的方法吗?

对不起,如果不合理。我只是开始使用react-native和firebase。

谢谢

1 个答案:

答案 0 :(得分:1)

好吧...

对于mysql,您可以使用axios插件。是使用mysql数据库的最佳方法。

Firebase使用异步请求,如果要同时使用这两种方法,最好的方法是使用axios。

首先,您从mysql表中获取用户,对吗? 所以..你要做类似的事情:

return axios.get(server_address&param=PARAM_VALUE)                          
            .then(response => {                                     
                return(response);
            }).catch(function(error) {
                alert.error(error.message);
            });

Axios离开将返回JSON响应。 您可以使用GET或POST方法。

因此...使用JSON,您可以将数据发送给Firebase进行加载或创建用户。

那样:

return firebase
    .auth()
    .signInWithEmailAndPassword(loginEmail,loginPassword)
    .then( user => {            
        return user;
    })
    .catch(error => {
        if ((error.code == 'auth/user-not-found') || (error.code == 'auth/invalid-email'))  {
            return new Promise((resolve, reject) => {
                Alert.alert(
                    'User not found',
                    'Create ?',
                    [{
                        text: 'No',
                        onPress:() => resolve(),
                        style:'cancel'
                    },{
                        text:'Yes',
                        onPress: () =>{
                            firebase
                            .auth()
                            .createUserWithEmailAndPassword(loginEmail,loginPassword)
                            .then(resolve)
                            .catch(reject)
                        }
                    }],
                    {cancelable: false}
                )
            })
        }
        return Promise.reject(error)
    })

有关axios的完整指南: https://github.com/qiangmao/axios#readme

有关Firebase的完整指南: https://firebase.google.com/docs/auth/?hl=en