Estoy tratando de conectar Firestore (v 9.6.7) a mi aplicación. Estoy usando la sintaxis web 9. Mi código es casi directamente de las guías aquí .
Parece que:
import { initializeApp } from 'firebase/app'; import { getFirestore } from 'firebase/firestore'; import { collection, getDocs } from "firebase/firestore"; // Initialize Firebase const firebaseConfig = { apiKey: ... authDomain: ..., projectId: ..., storageBucket: ..., messagingSenderId:..., appId: ..., measurementId: ... }; // Initialize Firebase const app = initializeApp(firebaseConfig); const db = getFirestore(app); // Read collection from Firestore and print it const querySnapshot = getDocs(collection(db, "Users")); console.log(querySnapshot); export { db }La promesa devuelta es:
Promesa { "_U": 0, "_V": 0, "_W": nulo, "_X": nulo, }
¿Qué está yendo mal?
Gracias.
Amigo, cuando te digo que luché con esto durante dos días seguidos, me refiero a dos días seguidos de 8 horas.
La respuesta está en la fuente de firebase.
Lo primero que debe hacer es agregar un archivo metro.config.js a la raíz de su proyecto. Dentro agrega lo siguiente:
const { getDefaultConfig } = require("metro-config"); const { resolver: defaultResolver } = getDefaultConfig.getDefaultValues(); exports.resolver = { ...defaultResolver, sourceExts: [ ...defaultResolver.sourceExts, "cjs", ], };Esto permitirá extensiones de fuente "cjs".
Otra buena forma de imprimir tu colección desde firestore es así:
const db = getFirestore() const colRef = collection(db, "collection") getDocs(colRef) .then((snapshot) => { let collection = [] snapshot.docs.forEach((doc) => { collection.push({...doc.data(), id: doc.id }) }) })Esta es una buena manera de imprimir en la consola de una manera mucho más amigable.
Pruébelo y vea si funciona. Si no es así, por favor comente para que pueda ayudar más.
Quiero etiquetar la respuesta original de stackoverflow para el archivo metro.config.js porque no se me ocurrió esto por mi cuenta, pero no puedo encontrarlo. Si lo hago, editaré esta publicación con el enlace para obtener crédito.
Edito: lo encontré. Crédito aquí .