Soy bastante nuevo en expo y firebase, y tengo este error de que no tengo idea de cuál es el problema. Estoy tratando de obtener fotos de la base de datos de firebase. Estoy seguro de que el problema no es con la configuración de Firebase porque puedo cargar fotos en el almacenamiento de Firebase.
Sospecho que el problema es con la exportación e importación de firebase.
Este es el mensaje de error que recibo:
[TypeError: _firebase.db.ref no es una función. (En '_firebase.db.ref('usuarios/fotos')', '_firebase.db.ref' no está definido)]
Nota: estoy usando firebase v9
Archivo App.js:
import { db } from './firebase'; export default function App() { async function loadPhotos() { try { db.ref('users/photos') .then(url => { console.log('URL: ', url); }) .catch(e => console.log(e)); console.log('Got here'); } catch (error) { console.log('error', error); } } ............... }archivo firebase.js:
import firebase from 'firebase/compat/app'; import { getDatabase } from 'firebase/database'; const firebaseConfig = { apiKey: '......', authDomain: '.....', projectId: '....', storageBucket: '....', messagingSenderId: '....', appId: '.....', measurementId: '....', }; if (!firebase.apps.length) { firebase.initializeApp(firebaseConfig); } export const db = getDatabase();En la versión 9 y posteriores del SDK de Firebase, la mayoría de las funciones que antes eran un método en los objetos ahora están disponibles como una función de nivel superior.
Entonces, en lugar de db.ref('users/photos') , debe hacer ref(db, 'users/photos') .
También te falta una llamada de get , que es la forma en que realmente recuperas los datos de la referencia:
get(ref(db, 'users/photos')) .then(url => { console.log('URL: ', url); }) .catch(e => console.log(e)); Todo esto está bastante bien documentado en la documentación de Firebase sobre la lectura de datos , por lo que recomiendo tenerlo a mano. Alternativamente, puede usar las rutas de compat en v9, para que la sintaxis anterior funcione como se muestra en la guía de actualización /