Así que algo muy extraño está sucediendo. Creé un punto final de API en Next.js que usaba Firebase Firestore para almacenar datos. Después de iniciar el servidor de desarrollo y navegar hasta el punto final, puedo ver los datos: Resultado de la API
[ { "id": "20ZVNNLYh9gR58OYnRtB", "createdAt": { "seconds": 1635892290, "nanoseconds": 712000000 }, "authorId": "Hc6y1tymvQQL1eqZyZsc4UUINkz2", "url": "https://test.com", "sitename": "Test" } ]
Sin embargo, si vuelvo a cargar la página solo una vez después de esta primera llamada, la aplicación se interrumpe y aparece este error: Error de Firebase
FirebaseError: Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore
Aquí está el código que estoy usando para inicializar mi aplicación Firebase:
import { initializeApp } from 'firebase/app'; const firebaseConfig = { apiKey: process.env.NEXT_PUBLIC_API_KEY, authDomain: process.env.NEXT_PUBLIC_AUTH_DOMAIN, projectId: process.env.NEXT_PUBLIC_PROJECT_ID }; export default initializeApp(firebaseConfig);
Y aquí está el código que genera el punto final de la API y devuelve los datos de firebase/firestore:
import { getFirestore, collection, getDocs } from '@firebase/firestore'; import app from '@/lib/firebase'; const db = getFirestore(app); export default async (_, res) => { const sites = []; console.log(typeof db); const snapshot = await getDocs(collection(db, 'sites')); // const snapshot = await db.collection('sites').get(); snapshot.forEach((doc) => { sites.push({ id: doc.id, ...doc.data() }); }); res.status(200).json(sites); };
Por favor, hágame saber si hay alguna información útil adicional, y espero cualquier comentario/ayuda.
FYI, estoy usando "firebase": "^9.4.0"
y la documentación de Firebase Web Version 9 (modular).