Estoy usando firebase en mi proyecto reactjs+typescript. Quiero escribir un documento en firebase y estoy usando setDoc para hacer este trabajo.
import { doc, setDoc } from 'firebase/firestore'; setDoc(doc(database, `path`), objData) Cuando marca la función return, dice Promise<...> . Pero, ¿cómo se supone que debo usar los controladores de promesas then() catch() si no sé qué devuelve la promesa cuando se completa/rechaza?
No estoy muy familiarizado con Firebase, pero después de mirar alrededor, parece que el resultado será si setDoc() fue exitoso o no. Entonces .then() significaría que sí y .catch() significaría que no. Así que realmente todo lo que querrías es algo como esto
import { doc, setDoc } from 'firebase/firestore'; setDoc(doc(database, `path`), objData) .then(() => { console.log("Successful")}) .catch((error) => { console.log(`Unsuccessful returned error ${error}`)}); Nuevamente, no estoy completamente seguro de los valores exactos devueltos, ya que no pude encontrar mucho, pero si hay un valor de resultado dado, lo colocaría en .then((result) => {console.log(result)}) .
La documentación de Firebase sugiere usar await , por lo que aquí tiene un ejemplo completo de manejo de errores con await y limpieza finalmente.
import { doc, setDoc } from 'firebase/firestore'; async function run() { try { await setDoc(doc(database, `path`), objData) } catch (e) { console.error(e); // handle your error here } finally { console.log('Cleanup here'); // cleanup, always executed } } run();En Typescript, no necesita especificar el tipo de devolución de la promesa con precisión. Aquí hay un ejemplo de cómo usar los controladores de promesa con setDoc:
import { doc, setDoc } from 'firebase/firestore'; setDoc(doc(database, `path`), objData) .then((data) => {console.log('data', data);}) .catch((err) => {console.log('err', err);})