Tengo problemas para cambiar este código de firebase v8 a la versión modular de firebase v9 en reactjs.
const uploadFirestore = useCallback(async() => { await db.collection('users').doc(res.user.uid).collection('tareas').add({ name: 'Test Task', fecha: Date.now() }) })Y quiero convertirlo a firebase 9 modular, también pasar el userUid en las colecciones.
Estaba tratando de hacerlo de esta manera:
import React, { useCallback } from 'react' import { db } from "./firebase" import { collection, doc, addDoc } from "firebase/firestore"; function App(props) { const uploadFirestore = useCallback(async() => { await addDoc(doc(db, 'users', props.user.uid, 'tareas'), { name: 'Test Task', fecha: Date.now() }) }) return ( <div> <button onClick={uploadFirestore}> Upload </button> </div> ) } export default AppEste es mi firebase.js:
import { initializeApp } from "firebase/app"; import { getFirestore } from 'firebase/firestore'; const firebaseApp = initializeApp({ hidden api uwu }); const db = getFirestore(firebaseApp); export { db }Pero arroja un:
TypeError: n.indexOf no es una función
¿Alguna ayuda?
Esto se ve mal:
addDoc(doc(db, 'users', props.user.uid, 'tareas'), ...Está intentando agregar un documento a un documento, que tiene dos problemas:
tareas ) a la llamada a doc .Lo que quieres aquí es:
addDoc(collection(db, 'users', props.user.uid, 'tareas'), ...