Estoy tratando de crear 2 documentos en uno de los cuales se usa la identificación del primer documento en el segundo. Uno de los problemas es que mi código parece cableado, especialmente el encadenamiento. Me temo que incluso si funciona, podría estar mal.
¿Alguna idea para un refactor más claro? El flujo es el siguiente:
const Signup = async (email: string, password: string) => { await createUserWithEmailAndPassword(auth, email, password) .then((userCredential) => { const user = userCredential.user; const colRef = collection(db, 'Shared'); addDoc(colRef, { sharedValue: '', }).then((res) => setDoc(doc(db, 'Data', user.uid), { sharedId: res.id, }) ); }) .catch((error) => { console.log(error) }); };Como se muestra en la documentación sobre cómo agregar un documento :
En algunos casos, puede ser útil crear una referencia de documento con una identificación generada automáticamente y luego usar la referencia más adelante. Para este caso de uso, puede llamar a
doc().import { collection, doc, setDoc } from "firebase/firestore"; // Add a new document with a generated id const newCityRef = doc(collection(db, "cities")); // later... await setDoc(newCityRef, data);
Asi que:
await createUserWithEmailAndPassword(auth, email, password) .then((userCredential) => { const user = userCredential.user; const colRef = collection(db, 'Shared'); const docRef = doc(db, 'Shared'); setDoc(docRef, { sharedValue: '', }).then((res) => setDoc(doc(db, 'Data', user.uid), { sharedId: docRef.id, }) ); }) .catch((error) => { console.log(error) }); };