Не удается связаться с базой данных Firebase в реальном времени в React Native

# #android #firebase #react-native #firebase-realtime-database #react-native-android

Вопрос:

ОБНОВЛЕНИЕ: Мне удалось исправить это не с помощью react-native-firebase, а просто стандартной firebase. Может быть, в этой библиотеке что-то неправильно работает.

Я пытаюсь использовать базу данных Firebase в реальном времени с помощью простого собственного проекта Android React, но мне не удается взаимодействовать с ней в обоих направлениях. Я следовал этому руководству, но я просто не могу писать или читать какие-либо данные. Самое странное, что я не получаю никаких ошибок, это просто не работает. Я также попробовал аутентификацию, и это работает, поэтому я думаю, что настроил ее правильно. Кто-нибудь знает, как заставить это работать?

Узел: v16.5.0

Обновить:

 App.js:

    import React, {useEffect} from 'react'
    import { View, Text, TouchableOpacity } from 'react-native'
    import { signInUser, signOutUser, signUpUser, writeDb } from './apiService'
    import { firebase, Auth, database } from './Setup'
    
    export default function App() {
    
      useEffect(() => {
        const userRef = database().ref('/users');
        const OnLoadingListener = userRef.on('child_added',snapshot=>{
          console.log(snapshot.val())
        });
        return()=>{
          userRef.off('value', OnLoadingListener)
        }
      },[])
    
      return (
        <View style={{justifyContent: 'center', alignItems: 'center', flex: 1}}>
          <TouchableOpacity style={{backgroundColor: 'red', width: 200, height:50}}
            onPress={()=>{
              console.log('Press')
              writeDb('1', 'bebo').then((result) => {
                console.log(result)
              }).catch(err => {console.log(err)})
            }
          }>
          </TouchableOpacity>
        </View>
      )
    }
 

Setup.js

 import React from 'react'
import { View, Text } from 'react-native'
import App from './App'
import firebase from '@react-native-firebase/app'
import Auth from '@react-native-firebase/auth'
import database from '@react-native-firebase/database'

const firebaseConfig = {
  apiKey: "AIzaSyAMKwVDTmEG3lVqOxQv5eu3714EmOnmCFw",
  authDomain: "realtimedb-d8c6e.firebaseapp.com",
  databaseURL: "https://realtimedb-d8c6e-default-rtdb.europe-west1.firebasedatabase.app",
  projectId: "realtimedb-d8c6e",
  storageBucket: "realtimedb-d8c6e.appspot.com",
  messagingSenderId: "661718455258",
  appId: "1:661718455258:web:8e2978ec2a1dc1020166e3",
  measurementId: "G-SP0ZXD7J5L"
};

if(firebase.apps.length===0) {
  firebase.initializeApp(firebaseConfig)
}

export {firebase, Auth, database}

export default function Setup() {
  return (
    <App />
  )
}
 

apiService.js:

 import React from 'react'
import {firebase, Auth, database} from './Setup'

export const writeDb = (id, name) => {
  return new Promise (function (resolve, reject){
    console.log('WriteDB')
    let key;
    if(id!=null){
      key=id;
    }
    else{
      key=database().ref().push().key
    }

    let dataToSave={
      id: key,
      name: name,
    };

    const ref = database().ref('/prova').push()
    console.log(ref.key)

    ref
    .set(dataToSave)
    .then((snapshot) =>{
      resolve(snapshot)
    })
    .catch(error =>{
      reject(error);
    });
  });
};
 

Когда я нажимаю на осязаемую область, она не записывается в базу данных. Чтобы инициализировать Firebase, я создал новый проект, затем создал новое веб-приложение и вставил конфигурацию в Setup.js, затем создал новую базу данных в реальном времени, вот и все