首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法读取Realtime本机中Firebase实时数据库中的数据

无法读取Realtime本机中Firebase实时数据库中的数据
EN

Stack Overflow用户
提问于 2021-02-27 01:23:15
回答 2查看 496关注 0票数 0

我正在开发一个简单的来读取和写入Firebase数据库中的数据。我在Firebase中的读写权限已设置为true:

代码语言:javascript
复制
{
  "rules": {
    ".read": true,  
    ".write": true,  
  }
}

以下是我的相关档案:

App.js

代码语言:javascript
复制
import React from 'react'
import {View, StyleSheet, Button} from 'react-native'
import * as firebase from 'firebase'
import RootStackNavigator from './navigation/RootNavigation'

export default class App extends React.Component {

  constructor(props) {
    super(props)
    this.state = {
      isLoadingComplete: false
    }
    var firebaseConfig = {
      apiKey: "xxxxxxx",
      authDomain: "testproject-9d0bc.firebaseapp.com",
      databaseURL: "https://testproject-9d0bc-default-rtdb.firebaseio.com",
      projectId: "testproject-9d0bc",
      storageBucket: "testproject-9d0bc.appspot.com",
      messagingSenderId: "1003049293166",
      appId: "1:1003049293166:web:1df37fd6d181cf895cdd7f"
    };

    if (!firebase.apps.length) {
    firebase.initializeApp(firebaseConfig)
    } else {
      firebase.app()
    }
   }

  render() {
    return (
    <View style={styles.container}>
      <RootStackNavigator/>
    </View>
    )
  }
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
  },
});

RootStackNavigation.js

代码语言:javascript
复制
import React from 'react';
import { createAppContainer, StackNavigator } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
import HomeScreen from '../src/screens/HomeScreen';

const RootStackNavigator =  createStackNavigator(
  {
      screen: HomeScreen
  },
  {
    initialRouteName:"screen", // first component that should be displayed
    defaultNavigationOptions: {
      title: "App" 
    }
  }
);

export default createAppContainer(RootStackNavigator)

HomeScreen.js

代码语言:javascript
复制
import React from "react";
import { Text, StyleSheet, View, Button, TouchableOpacity } from "react-native";
import * as firebase from "firebase";
const HomeScreen = (
  props
) => {
  function getData() {
    firebase
      .database()
      .ref("people/")
      .on("value", (snapshot) => {
        const age = snapshot.val().age;
        console.log("Age: " + age);
      });
  }

  return (
    <View>
      <Text>Hello this is the home screen</Text>
      <Button title="Get Data" onPress={getData} />
    </View>
  );
};

const styles = StyleSheet.create({
  text: {
    fontSize: 30,
  },
});

export default HomeScreen;

我的firebase数据库看起来是这样的(所有数据都是通过firebase网站手动添加的),我希望能够在将“获取数据”按钮按到控制台后打印出这些项,如我的getData函数在HomeScreen.js中所示。

但是,我在getData中的代码不起作用,没有输出到我的控制台。我在这里错过了什么?

EN

回答 2

Stack Overflow用户

发布于 2021-02-27 05:11:38

请在代码中修改此代码。

代码语言:javascript
复制
firebase.database.ref("people").on("value", snapshots => {
    let peoples = [];
    snapshots.forEach((snapshot) => {
   peoples.push(snapshot.val().age);
    console.log(snapshot.val().age);
    });
   // here you can set this Array
  // setPeople(peoples) 
票数 1
EN

Stack Overflow用户

发布于 2021-02-28 21:01:05

解决了我的问题。正如您在我的firebase数据库中所看到的,我访问数据的方式是错误的。如果我想得到“爸爸”的年龄,我应该打电话给snapshot.val().dad

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

https://stackoverflow.com/questions/66394730

复制
相关文章

相似问题

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