2
respostas

Se eu já tenho o banco pronto, posso usar o ORM?

Se eu já tenho o banco MySQL pronto, posso usar o ORM?

Gostaria de saber antes de ver o curso, pq tentei usar o sequelize-auto mas não consegui. Eu já tenho o banco de dados MySQL estruturado, precisaria só importar ele pro Node e usar o Sequelize pra manipular as queries.

Obrigado!

2 respostas

Olá, Igor, pode sim! A primeira parte do curso fala justamente sobre a criação de um banco com MySQL, mas se você já tem o banco criado, deve ter as credenciais de acesso (user e senha) e também o nome e URL do banco que quer conectar. A partir disso, é só seguir com o curso e acompanhar as instruções sobre como conectar o banco ao Sequelize.

IMPORTANTE! Caso não seja um banco local, lembre-se de não subir o arquivo de configuração no GitHub (ou similar) para não deixar as informações do banco expostas - ou use um repositório privado. Nesse caso, o melhor mesmo é usar variáveis de ambiente, através de libs como o dotenv para garantir que dados privados - por exemplo, dados de conexão de um banco - não sejam expostos.

Bons estudos ;)

Beleza, eu tinha o banco criado com as tables já e populado, mas resolvi fazer desde o início mesmo, eui to tentando associar duas tabelas pelo Sequelize, mas ele tá me dando um erro, será que alguém pode me ajudar?

Segue meus models:

USUARIO:


module.exports = (sequelize, DataTypes) => {
    const Usuario = sequelize.define("Usuario", {
        nome: DataTypes.STRING,
        cpf: DataTypes.STRING,
        login: DataTypes.STRING,
        password: DataTypes.STRING,
        dataDeNascimento: DataTypes.DATEONLY,
        resetPassword: DataTypes.STRING,
        email: DataTypes.STRING,
        isAdm: DataTypes.BOOLEAN,
    })

    Usuario.associate = (models) => {
        Usuario.belongsToMany(models.Habilidade, {
            through: "Usuarios_Habilidades",
            as: "habilidades",
            foreignKey: "usuario_id",
        })
    }
    return Usuario
}

HABILIDADE:

const { Usuario } = require("./Usuario")

module.exports = (sequelize, DataTypes) => {
    const Habilidade = sequelize.define("Habilidades", {
        nome: DataTypes.STRING,
    })

    Habilidade.associate = (models) => {
        Habilidade.belongsToMany(models.Usuario, {
            through: "Usuarios_Habilidades",
            as: "usuarios",
            foreignKey: "habilidade_id",
        })
    }

    return Habilidade
}

O erro:

[nodemon] starting node index.js /home/igor/p/wise-systems-trainee/projeto2-terceira-tentativa/node_modules/sequelize/lib/associations/mixin.js:49 throw new Error(${this.name}.belongsToMany called with something that's not a subclass of Sequelize.Model); ^

Error: Usuario.belongsToMany called with something that's not a subclass of Sequelize.Model at Function.belongsToMany (/home/igor/p/wise-systems-trainee/projeto2-terceira-tentativa/node_modules/sequelize/lib/associations/mixin.js:49:13) at Function.Usuario.associate (/home/igor/p/wise-systems-trainee/projeto2-terceira-tentativa/models/Usuario.js:14:17) at /home/igor/p/wise-systems-trainee/projeto2-terceira-tentativa/models/index.js:41:23 at Array.forEach () at Object. (/home/igor/p/wise-systems-trainee/projeto2-terceira-tentativa/models/index.js:39:17) at Module.compile (internal/modules/cjs/loader.js:1072:14) at Object.Module.extensions..js (internal/modules/cjs/loader.js:1101:10) at Module.load (internal/modules/cjs/loader.js:937:32) at Function.Module._load (internal/modules/cjs/loader.js:778:12) at Module.require (internal/modules/cjs/loader.js:961:19) [nodemon] app crashed - waiting for file changes before starting...

Segue o código no Git:

https://github.com/igorovisk/testeAPI.git