Estou tentando fazer com que quando um novo cadastro seja solicitado, verifique se o e-mail digitado ja exista no banco de dados. Porém não consigo ter esse retorno de jeito nenhum. Já, no getter eu consigo ter o retorno corretamente.
Segue os codes!
Método estatico no modelo de usuario
static async buscaPorEmail(email) {
const usuarios = UsuarioDao.getUserForEmail(email);
usuarios.then(usuario => {
if (!usuario.length > 0) {
return new Usuario(usuario);
} else {
console.log('este e-mail ja esta em uso');
}
});
O DAO com o mysql
getUserForEmail(email) {
return new Promise((resolve, reject) => {
const qry = `SELECT * FROM tbl_usuarios WHERE email=${email}`
conexao.query(qry, (error, usuario) => {
if (error) {
return reject('Não foi possível encontrar o usuário!');
}
return resolve(usuario);
});
});
}
O método adiciona do Controller
async adiciona(req, res) {
const { nome, email, senha } = req.body
try {
const usuario = new Usuario({ nome, email, senha });
await usuario.adiciona();
res.status(201).json();
} catch (error) {
if (error instanceof InvalidArgumentError) {
res.status(422).json({ error: error.msg });
} else if (error instanceof InternalServerError) {
res.status(500).json({ error: error.msg });
} else {
res.status(500).json({ error: 'ERRO CONTROLLER' });
}
}
}
O método adiciona do Modelo de Usuario
async adiciona() {
if (await Usuario.buscaPorEmail(this.email)) {
throw new Error('erro no modelo add')
}else {
console.log('Cadastro OK');
}
/* return UsuarioDao.setUsuario(this); */
}