1
resposta

[Solução encontrada] Usuário retornando com arrays (

No final do método cadastrarAcl(dto), em await database.usuarios.findOne(), o instrutor esqueceu de adicionar o parâmetro where com o dto.usuarioId:

const novoUsuario = await database.usuarios.findOne({
    include: [ 
        {...},
        {...}
    ]
})

Sem esse parâmetro, a função deixa de filtrar pelo id e retorna o primeiro usuário encontrado no banco de dados. Por esse motivo, alguns alunos estavam relatando ter recebido como resposta da requisição um usuário com os atributos usuario_roles: [] e usuario_permissoes: [] vazios.

Assim, para corrigir, basta adicionar o parametro where logo após o include, como já implementado em outras partes:

class SegurancaService {
    async cadastrarAcl(dto) {
    // código omitido
        const novoUsuario = await database.usuarios.findOne({
            include: [
                {
                    model: database.roles,
                    as: 'usuario_roles',
                    attributes: ['id', 'nome', 'descricao'],
                    through: {
                        attributes: [],
                    }
                },
                {
                    model: database.permissoes,
                    as: 'usuario_permissoes',
                    attributes: ['id', 'nome', 'descricao'],
                    through: {
                        attributes: [],
                    }
                }
            ],
            where: { 
                id: dto.usuarioId
            }
        })

        return novoUsuario
    }
}
1 resposta

Oi, Igor! Como vai?

Agradeço por compartilhar.

Gostei da sua análise, identificando a ausência do parâmetro where e explicando claramente o impacto disso no retorno dos dados. Sua observação mostra atenção ao comportamento da query e ao resultado inesperado com arrays vazios, o que é um ponto importante no uso de ORMs como o Sequelize.

Continue nesse caminho de investigar o comportamento da aplicação além do código apresentado.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!