ANÚNCIO

~/questoes/programacao

No padrão Repository, todos os métodos CRUD retornam qual tipo de objeto?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Para fixar

Retorno dos Métodos CRUD no Padrão Repository

Conceito central

No padrão Repository, os métodos CRUD retornam Promises, que são objetos especiais do JavaScript que representam operações assíncronas. Isso permite que o Controller trabalhe com async/await ou callbacks, abstraindo a complexidade das operações de banco de dados.

Por que essa resposta faz sentido

As Promises permitem trabalhar com código assíncrono de forma clara e legível. Quando um método do Repository é chamado, ele retorna uma Promise que resolve com os dados quando a operação termina, sem bloquear a execução do programa.

Armadilhas comuns

  • Confundir o retorno da Promise com o retorno do valor dentro dela. A Promise é o wrapper que encapsula a operação, não o dado final.
  • Tentar usar métodos do Repository sem await ou .then(), esperando o resultado imediatamente. Banco de dados é assíncrono, então sempre precisa esperar a Promise resolver.
  • Achar que o Repository retorna JSON pronto para HTTP. Na verdade, ele retorna dados que o Controller formata em JSON antes de enviar ao cliente.

Entenda as alternativas

A

O Repository não retorna strings XML ou JSON formatadas. Ele retorna Promises que, quando resolvidas, podem conter dados que o desenvolvedor converte para JSON na resposta HTTP.

B

Objetos JSON diretos sem encapsulação não funcionam com operações assíncronas de banco de dados. O Repository precisa retornar algo que represente uma operação em andamento, que é exatamente o que a Promise faz.

C

Arrays desorganizados não são o padrão do Repository Pattern. O método retorna uma Promise, não um array diretamente, pois a operação de banco de dados é assíncrona e não imediata.

D

Promises são o tipo correto de retorno. Elas encapsulam operações assíncronas e permitem que o Controller use async/await ou .then() para trabalhar com o resultado quando estiver pronto.

Dica prática: Quando chamar um método do Repository, sempre use async/await ou .then(). Exemplo: const selecoes = await selecaoRepository.findAll(); Sem esperar a Promise, você terá uma Promise no lugar do resultado real.

Revise pensando: Se um método do Repository retorna uma Promise, o que isso significa para o modo como você chama esse método no Controller?