1
resposta

[Bug] Cannot read properties of undefined (reading 'findOne')

Estou tentando usar o insomnia para testar a rota POST, mas ao fazer o send me deparo com essa mesagem de erro Meu codigo na parte de usuarioService.js:

const database = require('../models')
const { hash } = require('bcryptjs')
const uuid = require('uuid')

class UsuarioService {
    async cadastrar(dto) {
        const usuario = await database.usuario.findOne({
            where: {
                email:dto.email
            }
        })
    
        if (usuario) {
            throw new Error('Usuario ja cadastrado')
        }

        try { 
            const senhaHash = await hash(dto.senha, 8)

            const novoUsuario = await database.usuarios.create({
                id: uuid.v4(),
                nome: dto.nome,
                email: dto.email,
                senha: senhaHash
            })
    
            return novoUsuario
        } catch (error) {
            throw new Error('Erro ao cadastrar usuario')
        }

    }

}

module.exports = UsuarioService

Como seria primeiro contato com Insomnia, poderia ter a ver no meu código ou poderia ser algo no Insomnia?

1 resposta

Olá, Allyson.

Tudo bem?

Pelo erro que você mencionou e analisando o trecho do seu código, parece que o problema está relacionado ao acesso ao modelo de usuário no seu banco de dados. O erro "Cannot read properties of undefined (reading 'findOne')" sugere que o objeto que você está tentando acessar (database.usuario) é undefined. Isso normalmente ocorre quando o modelo não foi definido ou importado corretamente.

No seu código, você está tentando acessar database.usuario.findOne(...), mas na criação de um novo usuário, você usa database.usuarios.create(...). Perceba que em um você usa usuario e no outro usuarios. Isso pode indicar um possível erro de digitação ou inconsistência nos nomes dos modelos.

Verifique se o nome do modelo definido nos seus modelos Sequelize corresponde exatamente a usuario ou usuarios e use o mesmo nome consistentemente em todo o seu código. Aqui está um exemplo de como você pode definir e importar o modelo:

// Em algum lugar no seu arquivo de modelos, você deve ter algo como:
const Usuario = sequelize.define('usuario', {
    // definições do modelo
});

// E no seu arquivo database.js, você deve exportar esse modelo:
module.exports = {
    usuario: Usuario,
    // outros modelos
};

Certifique-se de que os nomes estão consistentes e corretamente referenciados em todas as partes do seu código. Além disso, verifique se o arquivo que contém os modelos está sendo corretamente importado com require('../models') e que o caminho está correto.

Espero que estas dicas ajudem a resolver o problema. Qualquer dúvida manda aqui. Bons estudos.