Recibo el siguiente error cuando intento obtener todos los documentos de una colección en Firestore usando el SDK de administración de firebase:
[nuxt] [error de solicitud] Se esperaba que el primer argumento de la colección () fuera una CollectionReference, una DocumentReference o FirebaseFirestore
Estoy probando a través de un simple console.log:
/server/api/posts.js :
import { firestore } from '../utils/firebase' import { collection, getDocs } from 'firebase/firestore' export default defineEventHandler(async (event) => { const colRef = collection(firestore, 'posts') console.log(colRef) })Así es como estoy inicializando firestore:
/server/utils/firebase.js:
import { initializeApp, cert } from 'firebase-admin/app' import { getFirestore } from 'firebase-admin/firestore' import serviceAccount from '../../service-account.json' export const app = initializeApp({ credential: cert(serviceAccount) }) export const firestore = getFirestore() Nota: El siguiente código funciona en el lado del servidor y puedo recuperar un documento, pero por alguna razón no puedo usar la collection() como en el ejemplo anterior.
import { firestore } from '../utils/firebase' export default defineEventHandler(async (event) => { const ref = firestore.doc(`animals/dog`) const snapshot = await ref.get() const data = snapshot.data() console.log(data) // return { // data // } })Además, si ejecuto la función de colección () en el lado del cliente, puedo recuperar las publicaciones con éxito. Simplemente no puedo entender por qué no funcionará en el lado del servidor.
¿Alguien sabe por qué me sale el error anterior?
Ninguno de los códigos de servidor que ha compartido se alinea con dicho mensaje de error. El error indica que está llamando a .get() o .onSnapshot() con algo que no es DocumentReference o CollectionReference.
Nota: collection() y doc() son funciones que devuelven referencias. En realidad, no se comunican con el servicio FS... una referencia es (esencialmente) una cadena como `/posts' o '/posts/1234567'
Entonces, en algún lugar de su código, debe encontrar dónde se encuentra el error anterior y compartirlo aquí o comprender por qué lo que está llamando no es una referencia de colección o referencia de documento válida.