1
resposta

array.push() dentro de callback de query sql (NodeJS)

Amigos, preciso de uma ajuda. Estou desenvolvendo um projeto pessoal a titulo de aprendizado, não tem muito a ver com o conteúdo de um curso específico aqui da alura, mas poderiam me ajudar?

Em uma validação de cadastro, tenho o array errors = [] declarado previamente, e em cada validação de campo, caso haja erro, tenho um array.push( {msg: 'mensagem de erro' } Isso funciona perfeitamente em validações simples como " if (senha !== confirmasenha) " - exemplo hipotetico

Mas no momento de fazer uma query (usando mysql) pra testar se o email já está cadastrado no banco, tenho o seguinte problema:

  db.query('SELECT * FROM Users WHERE email = ?', [emailregister], (err, result) => {
    if (result.length > 0) {
      errors.push( { msg: 'email ja registrado' } )
    console.log(errors) //imprime o erro acima com sucesso no array
    }
    console.log(errors) //da mesma, forma, imprime o erro com sucesso.
  })

console.log(errors) // aqui o erro não existe mais.
console.log(errors.length) // retorna 0

Porque isso acontece? O que pode ser feito para contornar? Ate consegui resolver com gambiarra, mas queria uma forma mais elegante...

1 resposta

Oi Daniel, tudo bem? Me explica a tal gambiarra que você fez que resolveu só pra mim entender até onde você foi, por favor...

Acredito que sei o que está acontecendo mas preciso testar para garantir que é isso mesmo.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software