Así que tengo una aplicación React Native simple que creé usando Expo y depuré en mi dispositivo Android personal.
Incluí firebase/firestore en mi aplicación y ahora estoy tratando de agregar un objeto a firestore al hacer clic en el botón.
Aquí está mi código:
firebaseConfig.js:
import { initializeApp } from '@firebase/app'; var config = { ... } const app = initializeApp(config); export default app;Componente:
importar {aplicación} desde '../firebaseConfig'; importar { getFirestore } desde 'firebase/firestore/lite'; import { doc, setDoc, colección, consulta, donde, getDocs, initializeFirestore } desde "firebase/firestore"; ...
exportar función predeterminada Componente () { const firestoreDb = getFirestore (aplicación);
// this function is called when clicking a button const onAddListPress = () => { setDoc(doc(firestoreDb, "cities", "LA"), { name: "Los Angeles", state: "CA", country: "USA" }); }}
Esto arroja el siguiente error:
Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestoreEste código anterior (en onPress) se copia de los documentos oficiales de firestore, aquí: https://firebase.google.com/docs/firestore/manage-data/add-data#set_a_document
¿Alguien tiene una idea de por qué esto no funciona?
Le sugiero que edite su publicación y elimine las claves de configuración de firebaseConfig , o elimine su aplicación de Firebase y cree una nueva desde la consola de Firebase para proteger su aplicación. Traté de replicar su aplicación usando React y recibí el mismo mensaje de error. Hubo dos cambios que hice para corregir el error. El primero está dentro del firebaseConfig file , la exportación predeterminada debe cambiarse a una exportación con nombre:
import { initializeApp } from "firebase/app" const firebaseConfig = { //Project configuration keys }; const app = initializeApp(firebaseConfig); export { app }; // Change from a default to a named exportAdemás, todas las importaciones dentro de su componente deben provenir del SDK de Javascript completo, no de la versión lite. La versión lite tiene algunas limitaciones que pueden resultar en este error específico .
import { app } from "./firestore-config"; import { getFirestore, getDoc, doc } from "firebase/firestore"; import './App.css'; export default function App() { const firestoreDB = getFirestore(app); const docRef = doc(firestoreDB, "users", "testUser1"); const getData = async () => { const data = await getDoc(docRef); console.log(data); } getData(); return <div className="App"></div>; }También es posible que desee revisar este problema de GitHub si está utilizando yarn para administrar sus dependencias.