首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法从mongo db react native获取数据

无法从mongo db react native获取数据
EN

Stack Overflow用户
提问于 2019-01-04 06:27:20
回答 1查看 1K关注 0票数 0

我是一个全新的React Native,刚刚想出了为我的本机应用程序设置一个本地服务器和数据库。我使用的是express和mongodb。我让我的服务器和mongo在我的后端上运行,并尝试进行axios调用以从我的数据库中获取数据,但是数组返回时是空的,并且来自数据的响应是未定义的。我已经在postman上测试了端点,并且端点没有问题。下面是我的api axios请求和我试图获取数据的组件的一个示例。非常感谢您的帮助!此外,如果你想看到任何其他代码,让我知道,我会张贴它。

代码语言:javascript
复制
// api.js

import axios from "axios";

    export const getAllTweets = async () => {
      await axios
        .get("http://(my ip address):(port number)/api/tweet")
        .then(response => {
          console.log("response: ", response);
          return response.data;
        })
        .catch(error => {
          console.log("There are no tweets to get!", error);
        });
    };
代码语言:javascript
复制
//HomeScreen.js

import React from 'react';
import {
  Image,
  Platform,
  ScrollView,
  StyleSheet,
  Text,
  TouchableOpacity,
  View,
} from 'react-native';
import { WebBrowser } from 'expo';

import { getAllTweets } from '../constants/api';

import { MonoText } from '../components/StyledText';

export default class HomeScreen extends React.Component {
  static navigationOptions = {
    header: null,
  };
  static defaultProps = {
    getAllTweets
  };
  state = {
    tweets: [],
    isLoading: false
  }

  async componentDidMount() {
    this.setState({ isLoading: true });
    let data = await this.props.getAllTweets();
    console.log('data: ', data);
    try {
      this.setState({ isLoading: false, tweets: data });
    } catch (error) {
      console.log(error, "Cannot get tweets in cdm");
    }
  }

  render() {
    console.log("this.state.tweets", this.state.tweets); <--- this is empty
    return (
      <View style={styles.container}>

      </View>
    );
  }

  _maybeRenderDevelopmentModeWarning() {
    if (__DEV__) {
      const learnMoreButton = (
        <Text onPress={this._handleLearnMorePress} style={styles.helpLinkText}>
          Learn more
        </Text>
      );

      return (
        <Text style={styles.developmentModeText}>
          Development mode is enabled, your app will be slower but you can use useful development
          tools. {learnMoreButton}
        </Text>
      );
    } else {
      return (
        <Text style={styles.developmentModeText}>
          You are not in development mode, your app will run at full speed.
        </Text>
      );
    }
  }
EN

回答 1

Stack Overflow用户

发布于 2019-01-04 14:26:34

我找到了答案。请求不是通过标准ip地址发送的。通过进入系统偏好设置=>网络=> TCP/IP (选项卡)并使用IPv4 ip地址,它纠正了这个问题。它还通过向其提供运行模拟器的虚拟路由器10.0.2.2的ip地址来工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54030670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档