Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

352
Vistas
Mi terminal se cuelga después de que promise.all se resuelve, ¿por qué?

Hola, estoy usando Firebase para backend y quiero entender por qué esto solo está colgado en la terminal.

Estoy intentando sembrar mi lista de autenticación y mi base de datos de Firestore, así que creé un script de sembrado. Leo una lista de usuarios de un archivo JSON y luego los agrego a Auth; sin embargo, para crear un registro de usuario coincidente en Firestore, conservo la ID de usuario que me createUserWithEmailAndPassword para crear un objeto de usuario con first_name y last_name (atributos triviales).

Luego, devuelvo ese objeto de usuario y resuelvo todas las promesas con Promise.all y luego sigo usando setDoc para agregar cada uno de esos objetos de usuario a Firestore.

Nota: ambas matrices de promesa se crean mediante funciones de mapa en la lista de usuarios inicial de JSON y luego en la lista de objetos de usuario devueltos de Auth, respectivamente.

El punto clave aquí es que, a pesar de que todo está bien agregado a mi Auth y Firestore... la terminal permanece colgada, sin éxito...

 const { store, auth } = require('../config.js'); const { createUserWithEmailAndPassword } = require('firebase/auth'); const { doc, setDoc } = require('firebase/firestore'); const data = require("./SEED_DATA.json"); console.log(data ? "DATA PRESENT" : "") const seedUsers = async (users) => { // seeds firebase Auth const user_auth_hydrated = await Promise.all(users.map(user => { return createUserInAuth(user) })) // seeds firebase Firestore // we wait for auth because we want to retain the uids to create matching records in store const user_store = await Promise.all(user_auth_hydrated.map(user => { return createUserInStore(user) })) Promise.resolve(user_store) } const createUserInAuth = async ({first_name, last_name, email, password}) => { return await createUserWithEmailAndPassword(auth, email, password) .then((userCredential) => { // Signed in const {uid} = userCredential.user; return { ID: uid.toString(), FIRSTNAME: first_name, LASTNAME: last_name } }) .catch(err => console.log("USER ADD AUTH FAILED", err.code, err.message)) } const createUserInStore = async ({ID, FIRSTNAME, LASTNAME}) => { return await setDoc(doc(store, 'users', ID), {FIRSTNAME, LASTNAME}) } seedUsers(data);

Imagen de la terminal colgando después de la ejecución (todo está bien en Auth y Firestore): ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No debe mezclar el enfoque tradicional de promesas y la sintaxis async/await. Aconsejo seguir con async/await solamente.

La función asíncrona seedUsers devuelve undefined. Haciendo Promise.resolve(user_store) no hace nada excepto crear un objeto que se destruye al final de la función.

Debes arreglar tu código de la siguiente manera:

 const seedUsers = async (users) => { /* your logic */ return user_store; }

y

 const createUserInAuth = async ({first_name, last_name, email, password}) => { try { const userCredential = await createUserWithEmailAndPassword(auth, email, password); /* your return logic */ } catch (error) { /* your error logic */ } }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda