así que estoy haciendo una pequeña aplicación web y esta es la primera vez que trato de usar firebase y React Js al mismo tiempo, así que mi problema es intentar hacer un documento en fireStore cada vez que un nuevo usuario se registra
// this is my SignUp Function async function signUp(email, password,) { await createUserWithEmailAndPassword(auth, email, password); } /*and Im calling in it my component and as onSubmit Function and passing it the email and password and this is where things got me a little tricky because wheni tried to pass my CreateDocument Function as a callBack it throws me an error and this is my CreateDocument function const creatProfileDocument = (currentuser) => { setDoc(doc(db, "users", currentuser.uid), { email: currentuser.email, age: false, name: "", }) };*/Realmente espero que alguien pueda ayudarme aquí
En general, hay dos formas de hacerlo: inmediatamente en su código de signUp o a través de un activador de autenticación en Firebase Functions.
Puede crear un documento inmediatamente después de su función signUp asíncrono:
async function signUp(email, password) { // This function returns a credential which gives you the user's uid // which you could then use to create your document const credential = await createUserWithEmailAndPassword(auth, email, password); const uid = credential.user.uid // Create a new document using the uid as the document id // or however else you want to use this const ref = firebase.auth().collection("users").doc(uid) await ref.set({ email, uid }) } El lado bueno de esto es que usted crea inmediatamente el documento para que sepa que está allí cuando signUp su función de registro. La desventaja es que debe relajar algunas reglas de seguridad para permitir que los usuarios creen documentos en esta colección desde el cliente. Hay muchas maneras de mantenerlo seguro, pero tenga en cuenta esto.
Su código de signUp crea un nuevo registro de autenticación en Firebase, y Firebase tiene funciones de activación de autenticación que pueden activarse cuando se crea o elimina un nuevo registro de autenticación.
exports.createUserDoc = functions.auth.user().onCreate((user) => { // Your new auth record will have the uid and email on it because // you used email as the way to create the auth record return admin.firestore().collection("users").doc(user.uid).set({ email: user.email, uid: user.uid }) });Esta es una forma segura de manejar las cosas y no requiere que abra ninguna regla de seguridad. Pero el inconveniente es que no se garantiza que las funciones de activación se activen inmediatamente. Por lo general, disparan en unos segundos, pero he visto que tardan entre 30 y 60 segundos. Entonces, si su código del lado del cliente necesita el documento inmediatamente después de la creación de la cuenta, esta no es una opción viable.