Estoy haciendo algo con respaldo por primera vez en mi vida, así que lo siento de antemano, estoy haciendo una aplicación de chat web. Creo que logré lidiar con la autenticación (parece estar funcionando) y ahora quiero conectar de alguna manera los nombres de usuario de autenticación con los usuarios del chat... así que traté de
const docRef = await addDoc(collection(database, 'users'), { name: user.displayName, }); console.log('Document written with ID: ', docRef.id); } catch (e) { console.error('Error adding document: ', e); }pero dice que el usuario no está definido porque userCredentials está dentro del alcance de las funciones de autenticación... Si pego este código en alguna función donde se pueden encontrar las credenciales de usuario, dice que hay algún problema con la palabra en espera...
Quiero tomar la credencial de usuario que inició sesión y usarla en la aplicación de chat... ¿así que necesito vincular de alguna manera la base de datos de autenticación y la base de datos de firestore? o se hace completamente diferente? Gracias
¿Podría dar un pequeño consejo? gracias (editado)
Si desea usar el nombre del usuario, primero debe asegurarse de que su código solo se ejecute una vez que el usuario haya iniciado sesión. En Firebase, puede hacerlo como se muestra en la documentación sobre cómo obtener el usuario actualmente registrado:
import { getAuth, onAuthStateChanged } from "firebase/auth"; const auth = getAuth(); onAuthStateChanged(auth, (user) => { if (user) { // 👇 your application specific code is below const docRef = await addDoc(collection(database, 'users'), { name: user.displayName, }); console.log('Document written with ID: ', docRef.id); } else { // User is signed out // ... } }) De hecho, recomendaría no usar addDoc , sino basar la ID del documento en la UID del usuario, así:
if (user) { // 👇 get UID from user const uid = user.uid; // Use as document ID 👇 👇 👇 const docRef = await setDoc(doc(database, 'users', uid), { name: user.displayName, }); Dado que los ID de documentos son únicos dentro de una colección, esto garantiza automáticamente que cada usuario solo pueda tener un documento en la colección de users . También hace que sea más fácil encontrar el documento de un usuario cuando es necesario y hace que sea más fácil garantizar que los usuarios solo puedan editar su propio documento .