Estoy tratando de agregar un nuevo usuario con firebase-admin y luego guardar un nuevo documento en una colección personalizada.
Ejemplo de código siguiente:
admin.auth().createUser(user) .then((record) => { user.uid = record.uid; userCollection.doc(record.uid).set({...user}) .then(writeResult => { resolve(); }) .catch(reason => { reject(reason) }); }) .catch((err) => { reject(err); }); El problema es que, si userCollection.doc(record.uid).set({...user}) falla, espero que se llame a la captura anidada (con reason como parámetro). En cambio, siempre se llama al externo (con err como param).
¿Hay algún problema con el SDK o estoy haciendo algo mal?
Gracias
Esto se debe a que no devuelve la promesa devuelta por userCollection.doc(record.uid).set() y, por lo tanto, no devuelve las promesas devueltas por los métodos then() y catch() subsiguientes. En otras palabras, no devuelves la cadena de promesas .
Pero, en realidad, debe encadenar sus Promesas de la siguiente manera y evitar una pirámide then()/catch() .
admin .auth().createUser(user) .then((record) => { user.uid = record.uid; return userCollection .doc(record.uid) .set({ ...user }) }) .catch((err) => { // Here you catch the potential errors of // the createUser() AND set() methods console.log(JSON.stringify(err)); });