Estoy tratando de hacer una función de inicio de sesión simple para mi web usando firebase, sin embargo, recibo un error que dice: ERROR db._checkNotDeleted is not a function
mis versiones de Firebase son 9 y React se ejecuta en 17.0.2.
Este es mi fragmento de archivo de configuración de firebase (ocultará las configuraciones ya que no es necesario):
import { initializeApp } from "firebase/app"; import { getAuth, signInWithPopup, GoogleAuthProvider } from "firebase/auth"; import { getDatabase, ref, set } from "firebase/database"; import { getFirestore, doc, getDoc, collection, addDoc, getDocs, query, where} from "firebase/firestore"; const firebaseConfig = { */*/*/*/ }; const app = initializeApp(firebaseConfig); export const auth = getAuth(app); export const createUserProfileDocument = async (userAuth, additionalData) => { if(!userAuth) return; const docRef = doc(db, "users", `${userAuth.uid}`); const docSnap = await getDoc(docRef); if (!docSnap.exists()) { const { displayName, email } = userAuth; const createdAt = new Date(); try { await set(ref(db, 'users/' + `${userAuth.uid}`), { displayName: "TEST" }) console.log("HERE"); } catch (error) { console.log("ERROR", error.message); } } return docRef; } const provider = new GoogleAuthProvider(); export const signInWithGoogle = () => { signInWithPopup(auth, provider) .then((result) => { console.log(result); }).catch((error) => { console.log(error); }) } const db = getFirestore();Aquí está mi proyecto: https://github.com/poolpy111/oto-clothing/tree/master/src
En la línea de error del depurador, aparece en la línea 43, que es donde uso el método "ref" de firebase. ¿Qué se supone que debo hacer?
Firebase tiene dos bases de datos, a saber, Firebase Realtime Database y Cloud Firestore . En el código provisto, está creando una DocumentReference usando doc() pero luego usando set() importado de Realtime Database SDK que está causando el error.
Si desea agregar datos en Firestore, importe setDoc() desde Firestore y refactorice el código como se muestra a continuación:
import { initializeApp } from "firebase/app"; import { getAuth, signInWithPopup, GoogleAuthProvider } from "firebase/auth"; import { getFirestore, doc, getDoc, setDoc, collection, addDoc, getDocs, query, where} from "firebase/firestore"; export const createUserProfileDocument = async (userAuth, additionalData) => { if(!userAuth) return; const docRef = doc(db, "users", `${userAuth.uid}`); const docSnap = await getDoc(docRef); if (!docSnap.exists()) { const { displayName, email } = userAuth; const createdAt = new Date(); try { // use setDoc() await setDoc(docRef, { displayName: "TEST" }) console.log("HERE"); } catch (error) { console.log("ERROR", error.message); } } return docRef; }Sigala documentación de Firestore para obtener más información.