Anteriormente, en Firebase, podía agregar un documento como este:
const myNewDoc = await db.collection('some-collection-name').add({ //Document details here... });
Con la introducción de Firebase 9 esto ya no funciona.
En lugar de .add
, creo que se supone que debo usar un método .addDoc
importado.
Pero parece que no puedo encadenar .addDoc
en .collection
.
Si trato de hacer algo como esto:
const myNewDoc = await db.collection('some-collection-name').addDoc({ //Document details here... });
TypeScript arroja este error:
Property 'addDoc' does not exist on type 'CollectionReference<DocumentData>'.ts(2339)
Podría crear algo más detallado como esto:
const someCol = collection(db, "some-collection-name"); const newDoc = await addDoc(someCol, { //Document details here... });
Pero prefiero "encadenarlo" como antes.
¿Es eso posible? ¿Cómo se haría?
¿Y debería incluso estar usando .addDoc
? ¿O algo mas?
addDoc()
es una función de nivel superior en Modular SDK. Intenta refactorizar tu código de esta manera:
import { collection, addDoc } from "firebase/firestore"; const newDoc = await addDoc(collection(db, "some-collection-name"), { // Document Data }); console.log("Document written with ID: ", newDoc.id);
La documentación tiene ejemplos tanto de espacios de nombres como de la nueva sintaxis.
Si está utilizando la versión compat
para usar una sintaxis anterior, entonces tendría que usar add()
en sí mismo.