para limitar la búsqueda a FirestoreDB, intenté usar el espacio de nombres reciente para getDocs().
const firebaseColRef = collection(db, "collection")Esto es lo que probé:
const firebaseColRef = collection(db, "collection").limit(x)Y esto:
const getDB = async () => { const data = await getDocs(firebaseColRef).limit(x); setFilmDB(data.docs.map((doc) => ({ ...doc.data(), id: doc.id }))); }En ambos casos, la consola indica:
Uncaught (in promise) TypeError: firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection(...).limit is not a functionRevisé varias documentaciones, tutoriales y artículos y no pude encontrar ningún otro espacio de nombres además del mencionado anteriormente. Y probé cualquier posible adición de .limit(x) para obtener cualquier otro resultado que no sea el indicador de la consola. Nada funcionó.
Qué me estoy perdiendo ?
¿Alguien puede señalarme en la dirección correcta?
Sería muy apreciado. gracias antonio
Casi todos los métodos de Firebase son una función de nivel superior en Modular SDK y se pueden importar directamente desde los SDK relevantes. Intente refactorizar el código como se muestra a continuación.
import { collection, getDocs, query, where, limit, orderBy } from "firebase/firestore"; const getDB = async () => { const colRef = collection(db, "collection"); // Keep adding query clauses in query() // like chaining them in name-spaced V8 version const q = query(colRef, where("field", "==", "value"), limit(1)); const data = await getDocs(q); console.log(data.docs.map((doc) => ({ ...doc.data(), id: doc.id }))) }La versión con espacio de nombre de la misma consulta como referencia:
const q = db.collection("col").where("field", "==", "value").limit(1);Puede encontrar una lista de todas las funciones en el nuevo Firestore SDK en la documentación .
También echa un vistazo: