Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

178
Visualizações
Bucle while con problemas asíncronos

Estoy tratando de implementar un proceso de back-end de registro donde la identificación del usuario se crea aleatoriamente. El proceso comprueba si existe el correo electrónico del usuario. Si no, crea una identificación aleatoria de 24 caracteres. Después de esto, verifica si esta identificación ya existe en otro usuario. Si no, debería crear el usuario en la base de datos (mysql).

Las funciones para crear el id y consultarlo en la base de datos son:

 const makeId = (length) => { var result = ''; var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; var charactersLength = characters.length; for (var i = 0; i < length; i++) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; }; getUserByID = (id, callback) => { db.query(`SELECT userID FROM users WHERE userID=?`, [id], (err, results) => { if (err) { return callback(err, null); }, return callback(null, results); }); };

Así que llamé a las funciones de esta manera:

 let found = true; while (found === true) { let userID = makeId(24); getUserByID(userID, (error, result) => { if (error) { return res.status(500).json({ errors: 'Database connection error' }); } if (!result.length) { found = false; } }); }

Por alguna razón que no entiendo, de esta manera está dando un bucle infinito. Traté de registrar cada uno de los pasos, incluso dentro de getUserByID y creo que no completa esta función. Supongo que es porque la consulta no está esperando la identificación (o viceversa). También probé un método try catch, el método .then().catch(){}, async await en las funciones y async fuera del ciclo while, pero por alguna razón no funcionaron. ¿Alguna idea de lo que puede estar mal? Gracias.

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda