1
resposta

[Dúvida] Não entendi como a camada Services funciona

Antes para fazer uma conexão com o banco, eu chamava o database, avisava qual tabela e depois incluía o método do Sequelize. Por exemplo:

  const pessoasAtivas = await database.Pessoas.findAll();
  return res.status(200).json(pessoasAtivas);

Depois que eu inclui a pasta Services, arrumei uma classe para o serviço e criei um novo método. A gente só se conecta com o banco. mas não avisa qual tabela. Exemplo: No arquivo PessoaController.js

  const pessoasAtivas = await pessoasServices.pegaRegistrosAtivos();
  return res.status(200).json

No arquivo PessoasServices.js

class PessoasServices extends Services {
  constructor() {
    super("Pessoas");
    this.matriculas = new Services("Matriculas"); // pedindo para o modelo Pessoas utilize o modelo matricula também.
  }

  async pegaRegistrosAtivos(where = {}) {
    return database[this.nomeDoModelo].findAll({ where: { ...where } });
  }
  
  // continuação do código

Não entendi. Como o código vai saber qual tabela ele vai usar?

Alguém pode me ajudar?

Obrigada

1 resposta

Olá Erica! Tudo bem com você?

Quando você utiliza a camada Services, você está separando a lógica de negócio da sua aplicação da interação direta com o banco de dados. Isso traz uma série de benefícios, como a organização do código e a reutilização de funcionalidades.

No exemplo que você compartilhou, a classe PessoasServices herda da classe Services e no construtor é passado o nome da tabela que será utilizada, no caso "Pessoas". Isso significa que a classe PessoasServices está configurada para trabalhar com a tabela "Pessoas" do banco de dados.

Dentro do método pegaRegistrosAtivos, você utiliza database[this.nomeDoModelo].findAll(). O this.nomeDoModelo é a propriedade herdada da classe Services e representa o nome da tabela que foi passado no construtor. Dessa forma, o código sabe qual tabela utilizar.

Por exemplo, se você tivesse outra classe MatriculasServices que também herda da classe Services e no construtor você passasse o nome "Matriculas", ao chamar o método pegaRegistrosAtivos dessa classe, o código saberia que deve utilizar a tabela "Matriculas".

Espero ter esclarecido a sua dúvida! Se tiver mais alguma pergunta, estou à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.