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

325
Visualizações
Can we have more than one async methods within a class in Javascript?

ContatoModel.js =

 class Contato {
      constructor(body) {
        this.body = body;
        this.errors = [];
        this.contato = null;
      };
    
  async register() {
    this.valida();
    if(this.errors.length > 0) return;

    this.contato = await ContatoModel.create(this.body);
  };

  async findId(id) {
    if(typeof id !== 'string') return;
    const user = await ContatoModel.findById(id);
    return user;
  };...

contatoController.js =

 exports.register = async (req,res) => {
  try{
    const contato = new Contato(req.body);
    await contato.register();

    if (contato.errors.length > 0) {
      req.flash('errors', contato.errors);
      req.session.save(() => res.redirect('/contato/'));
      return;
    }

    req.flash('success', 'Contato registrado!');
    req.session.save(() => res.redirect(`/contato/${contato.contato._id}`));
    return;
  }catch(e){
    console.log(e);
    return res.render('404');
  };
};

exports.update = async (req,res) => {
  if(!req.params.id) return res.render('404');
  
  const contato = await Contato.findId(req.params.id)

  if(!contato) return res.render('404');

  res.render('contato', { contato });
  
};

const contato = await Contato.findId(req.params.id) here findId is equal to any

but

await contato.register(); register looks like this: (method) Contato.register(): Promise

My Solution was to put the method outside the class, like this:

Contato.buscaPorId = async function(id) {
  if(typeof id !== 'string') return;
  const user = await ContatoModel.findById(id);
  return user;
}

what did I do wrong?

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