如何将React Native与mySQL集成

如何将React Native与mySQL集成,mysql,node.js,react-native,Mysql,Node.js,React Native,我是React Native的新手,我正在尝试将我的应用程序与托管提供商digitalocean.com内的mySQL数据库集成。 我已经设法通过nodejs和express获取了数据,但它实际上是在我的问题所在地获取数据 事情是这样的: 我创建了routes.js并插入了以下内容: 注意:以下凭据是真实的,但仅用于纯测试,我不介意共享 到现在为止一切都很好!您可以单击,在运行文件时将看到数据 这就是我被卡住的地方: 我本来打算在我的应用程序上显示数据,但我不知道该怎么做。 我做了一些研究,发现

我是React Native的新手,我正在尝试将我的应用程序与托管提供商digitalocean.com内的mySQL数据库集成。 我已经设法通过nodejs和express获取了数据,但它实际上是在我的问题所在地获取数据

事情是这样的:

我创建了routes.js并插入了以下内容:

注意:以下凭据是真实的,但仅用于纯测试,我不介意共享

到现在为止一切都很好!您可以单击,在运行文件时将看到数据

这就是我被卡住的地方: 我本来打算在我的应用程序上显示数据,但我不知道该怎么做。 我做了一些研究,发现了一个可能的解决方案,但没有奏效。它实际上给了我一个网络请求失败


有什么建议吗?

从Android 9开始,谷歌决定从bootclasspath中删除http客户端库

在Android 6.0中,我们取消了对Apache HTTP客户端的支持。从Android 9开始,该库将从bootclasspath中删除,默认情况下应用程序无法使用该库

有关更改的简要概述

为了连接http客户端,您必须在AndroidManifest.xml文件中添加以下行:

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

之后,您应该能够使用android Pie设备连接HTTP客户端

routes.js文件中MySQL数据库的主机名显示为134.122.22.176。这是数据库ip地址。无法从此IP地址获取。MySQL数据库不响应标准HTTP请求;它们不是web服务器


您的Express应用程序正在localhost上运行:-例如,我猜您可以在web浏览器中浏览该URL并查看数据。如果该Express应用程序正在您的开发计算机上运行,那么您只需在局域网上查找该计算机的IP地址xx.xx.xx.xx,并在获取中使用该地址。

在ios或android上?这是在android上。您在android OS 9上测试吗?您的目标sdk是否设置为28+?Im使用Galaxy s10 api 29上的expo
import React from "react";
import { View, Text, StyleSheet, TextInput, TouchableOpacity } from "react-native";
import { HeaderImg } from '../components/HeaderImg';
import { Button } from '../components/Button';

export default class DB extends React.Component {
    state = {
        email: "",
        password: "",
        errorMessage: null
    };

    fetchData = async() => {
        fetch('http://134.122.22.176:3000/farmers')
        .then(response => response.json())
        .then(users => console.dir(users))
        .catch(error=> console.log(error))
    }


    render() {
        return (
        <View style={styles.container}>
            <HeaderImg />

            <View style={styles.errorMessage}>
            {this.state.errorMessage && (
                <Text style={styles.error}>{this.state.errorMessage}</Text>
            )}
            </View>
            <Button 
            onPress={this.fetchData}
            />
        </View>
        );
    }
}
const styles = StyleSheet.create({      
});
<uses-library android:name="org.apache.http.legacy" android:required="false"/>