No "Services.js" eu tenho o método "pegaUmRegistro" que dentro dele ele chama o método "pegaTodosOsRegistros" que resolve o problema de pegar um registro somente também, porém ele usa o método "findAll" que retorna um array, então tenho que pegar o resultado na posição zero dentro do método "pegaUmRegistro", isso é um boa prática ou é ruim já que não se utiliza do método "findOne"?
const dataSource = require('../database/models'); //como o arquivo é index.js não precisamos passar o nome do arquivo.
class Services {
constructor(modelo) {
this.modelo = modelo;
}
async pegaTodosOsRegistros(opts = {}) {
const { scope, where, ...resto } = opts;
// 1) Resolve o "model" (com ou sem scope)
let modelo = dataSource[this.modelo];
if (scope) {
modelo = modelo.scope(scope);
}
// 2) Monta as opções finais pro findAll
const opcoes = { ...resto };
if (where && Object.keys(where).length > 0) {
opcoes.where = where; // deixa o Sequelize combinar com o que vier do scope
}
// 3) Executa
return modelo.findAll(opcoes);
}
async pegaUmRegistro(opts) {
if (!opts || !opts.where || Object.keys(opts.where).length === 0) {
throw new Error('Nenhum filtro (where) foi informado para busca única.');
}
const registros = await this.pegaTodosOsRegistros(opts);
return registros[0] || null;
}
}
module.exports = Services;