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

146
Visualizações
Cadena de error en NodeJs con sincronizar

Escribí una función para crear un perfil de usuario.

Uso el módulo de sincronización para deshacerme del infierno de devolución de llamada.

Cuando hago esto, todo funciona bien:

 var sql = jsonSql.build({ type: 'insert', table: 'tbl_user', values: {firstname: data.firstname, lastname: data.lastname, email: data.email, website: data.website, password: data.hashedPassword}, }); try { var query = sync.await(db.query(sql.query, sql.values, sync.defer())); } catch (err) { res.status(500).send(err); return; }

Cuando sql encuentra un usuario con una dirección de correo ya utilizada, envía un error. Perfecto.

Entonces pensé que sería una buena idea separar el código donde se escribe el usuario en la base de datos, porque tal vez desee crear un usuario en el backend de administración y luego podría reutilizar la función más pequeña.

La función más pequeña:

 function createUserInDB(data) { var sql = jsonSql.build({ type: 'insert', table: 'tbl_user', values: {firstname: data.firstname, lastname: data.lastname, email: data.email, website: data.website, password: data.hashedPassword}, }); return db.query(sql.query, sql.values); }

Que ahora se llama desde la función principal:

 try { var query = sync.await(userService.createUserInDB(data, sync.defer())); console.dir(query); } catch(err) { console.dir(err); res.status(500).send(err); return; }

Esto no funciona.

¿Cómo puedo obtener el resultado de la función más pequeña (como resultado de error o consulta) en mi función principal, para poder usar try / catch?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Finalmente lo resolví.

 function createUserInDB(data, resolve) { sync.fiber(function() { data.hashedPassword = bcrypt.hashSync(data.password, 10); var sql = jsonSql.build({ type: 'insert', table: 'tbl_user', values: {firstname: data.firstname, lastname: data.lastname, email: data.email, website: data.website, password: data.hashedPassword}, }); try { var query = sync.await(db.query(sql.query, sql.values, sync.defer())); //first argument would be error resolve(null, query); } catch(err) { resolve(err); } }); }

Básicamente, agregue la función de devolución de llamada al parámetro de función y luego resuélvalo dentro de la fibra.

over 4 years ago · Santiago Trujillo Relatório
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