# #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, затем создал новую базу данных в реальном времени, вот и все