3
respostas

Error: Values for ENUM have not been defined.

Estou com duvidas de como resolver esse erro "Error: Values for ENUM have not been defined." Rodei o comando par criar a tabela mas sem sucesso :/

node api/banco-de-dados/criarTabelas.js

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

meu codigo api-petshop\api\rotas\fornecedores

const Sequelize = require("sequelize");
const instancia = require('../../banco-de-dados');// declarando nossa instancia

const colunas = {
    empresa: {
        type: Sequelize.STRING,
        allowNull: false
    },
    email: {
        type: Sequelize.STRING,
        allowNull: false
    },
    categoria: {
        type: Sequelize.ENUM,
        value: ('racao', 'brinquedos'),
        allowNull: false
    }

}

const opcoes = {
    freezeTableName: true,
    tableName: 'fornecedores',
    timestamps: true,
    createdAt: 'dataCriacao',
    updatedAt: 'dataAtualizacao',
    version: 'versao'
}

module.exports = instancia.define('fornecedor', colunas, opcoes)

ERRO:

C:\Users\Caique\Desktop\Estudos\REST API ESCALAVEL\api-petshop>node api/banco-de-dados/criarTabelas.js
C:\Users\Caique\Desktop\Estudos\REST API ESCALAVEL\api-petshop\node_modules\sequelize\lib\sequelize.js:553
        throw new Error("Values for ENUM have not been defined.");
        ^

Error: Values for ENUM have not been defined.
    at Sequelize.normalizeAttribute (C:\Users\Caique\Desktop\Estudos\REST API ESCALAVEL\api-petshop\node_modules\sequelize\lib\sequelize.js:553:15)
    at C:\Users\Caique\Desktop\Estudos\REST API ESCALAVEL\api-petshop\node_modules\sequelize\lib\model.js:726:34
    at C:\Users\Caique\Desktop\Estudos\REST API ESCALAVEL\api-petshop\node_modules\lodash\lodash.js:13469:38
    at C:\Users\Caique\Desktop\Estudos\REST API ESCALAVEL\api-petshop\node_modules\lodash\lodash.js:4967:15    at baseForOwn (C:\Users\Caique\Desktop\Estudos\REST API ESCALAVEL\api-petshop\node_modules\lodash\lodash.js:3032:24)
    at Function.mapValues (C:\Users\Caique\Desktop\Estudos\REST API ESCALAVEL\api-petshop\node_modules\lodash\lodash.js:13468:7)
    at Function.init (C:\Users\Caique\Desktop\Estudos\REST API ESCALAVEL\api-petshop\node_modules\sequelize\lib\model.js:725:28)
    at Sequelize.define (C:\Users\Caique\Desktop\Estudos\REST API ESCALAVEL\api-petshop\node_modules\sequelize\lib\sequelize.js:219:11)
    at Object.<anonymous> (C:\Users\Caique\Desktop\Estudos\REST API ESCALAVEL\api-petshop\api\rotas\fornecedores\ModeloTabelaFornecedor.js:29:28)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)

C:\Users\Caique\Desktop\Estudos\REST API ESCALAVEL\api-petshop>
3 respostas

Oi Caíque, tudo bem? Vendo o vídeo aqui notei que você fez uma coisa diferente do instrutor, por isso está com esse problema. Se parar pra ver a mensagem de erro direitinho, ela tá dizendo que você não disse quais eram os valores que o campo categoria poderia receber já que ele é do tipo ENUM. Olha como está o seu:

categoria: {
        type: Sequelize.ENUM,
        value: ('racao', 'brinquedos'),
        allowNull: false
}

O do instrutor está bem assim:

categoria: {
        type: Sequelize.ENUM('racao', 'brinquedos'),
        allowNull: false
}

Assim o erro relacionado ao Enum estará solucionado e acredito que o comando para criar as tabelas deve funcionar sem mais problemas. Testa e me diz aqui se resolveu o problema por gentileza? Fico no aguardo!

Abraço e bons estudos!

Olá Wanderson, apliquei a correção meu código fico da seguinte forma.

const Sequelize = require("sequelize");

const instancia = require('../../banco-de-dados');// declarando nossa instancia

const colunas = {
    empresa: {
        type: Sequelize.STRING,
        allowNull: false
    },
    email: {
        type: Sequelize.STRING,
        allowNull: false
    },
    categoria: {
        type: Sequelize.ENUM('racao', 'brinquedos'),
        allowNull: false
    }

}

const opcoes = {
    freezeTableName: true,
    tableName: 'fornecedores',
    timestamps: true,
    createdAt: 'dataCriacao',
    updatedAt: 'dataAtualizacao',
    version: 'versao'
}

module.exports = instancia.define('fornecedor', colunas, opcoes)

Com isso fui rodar node api/banco-de-dados/criarTabelas.js

Nisso ele me retornou um erro de conexão Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Opa, entendi, cola aqui o código desse arquivo que conecta no banco de dados por gentileza?