Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Função Assincrona - na Query - NodeJs

Bom dia Pessoal,

estou querendo construir uma função assincrona no node.js.

O objetivo da funcao é retornar o id do usuario, e como parametros a função receberá o e-mail.

Pesquisei no google sobre async/await porém não consegui realizar esse teste.

Aqui em baixo é a chamada da funcao que buscará o id.

var idUsuario =this.findByEmail(user.email);
console.log("Id do Usuario:" + idUsuario);

e aqui é a funcao que deveria retornar o id.

userDao.prototype.findByEmail =async function(email){
  console.log("Consultando se e-mail ja está cadastrado:" + email);

  var id = await this._connection.query('SELECT * FROM users WHERE email = ?',
                          [email],
                          await function(exception,results,fields){
                            if(!exception) {
                              if (results.length>0){
                                var usuario = JSON.parse(JSON.stringify(results))[0];
                                console.log(usuario);
                                return usuario.idUser;
                              }else{
                                return 0;
                              }
                            }else{
                              return 0;
                            }
                          });
  console.log(id);
  //return id;
};
1 resposta
solução!

Oi chiaradia, o problema começa quando você define a função como async e depois executa ela como se ela não fosse assíncrona. Que é exatamente o que a chamada da função tá fazendo:

var idUsuario =this.findByEmail(user.email);
console.log("Id do Usuario:" + idUsuario);

Tenta fazer assim:

this.findByEmail(user.email).then(function(idUsuario) {
    console.log("Id do Usuario:" + idUsuario);
})

Implicitamente, uma async function retorna uma Promise.