Salve Galera!
Estou criando uma API com o Sequelize para fazer consultas em um banco Microsoft SQL Server.
Consegui realizar a conexão com o banco e rodei o método sync para comparar a tabela do banco com o modelo que criei, até ai tudo bem.
Porém, quando faço o teste pelo insomnia, a busca me retorna um array vazio, já tentei fazer a busca mais específica utilizando o findOne e ele me retorna um null.
Conseguem me dar uma luz, do que pode estar acontecendo? Porque ele retorna um status 200 mas não retorna os dados?
Vou colocar aqui meu código para facilitar a compreensão:
Configuração de conexão com o banco:
require('dotenv').config();
const Sequelize = require('sequelize');
const dbName = process.env.DB_NAME;
const dbUser = process.env.DB_USER;
const password = process.env.DB_PASSWORD;
const dbHost = process.env.DB_HOST;
const sequelize = new Sequelize(dbName, dbUser, password, {
host: dbHost,
dialect: 'mssql',
dialectOptions: {
options: {
encrypt: true,
port: 1433,
},
},
});
module.exports = sequelize;
Modelo:
const sequelize = require("../config/db.config");
const { DataTypes } = require('sequelize')
const TOP_10 = sequelize.define("TOP_10", {
BRICK: {
type: DataTypes.INTEGER,
field: 'BRICK',
},
SETOR_NEC_ABERTO: {
type: DataTypes.STRING(200),
field: 'SETOR_NEC_ABERTO',
},
EAN: {
type: DataTypes.STRING(15),
field: 'EAN',
},
CEP_INICIAL: {
type: DataTypes.INTEGER,
field: 'CEP_INICIAL',
},
CEP_FINAL: {
type: DataTypes.INTEGER,
field: 'CEP_FINAL',
},
PRODUTO: {
type: DataTypes.STRING(66),
field: 'PRODUTO',
},
LABORATORIO: {
type: DataTypes.STRING(50),
field: 'LABORATORIO',
},
UNIDADES: {
type: DataTypes.FLOAT,
field: 'UNIDADES',
},
FCC: {
type: DataTypes.INTEGER,
field: 'FCC',
},
RANK: {
type: DataTypes.INTEGER,
field: 'RANK',
},
}, {
tableName: 'dbo.TOP_10',
freezeTableName: true,
timestamps: false,
});
module.exports = TOP_10;
Controller:
const TOP_10 = require('../models/top10');
// Método para buscar todos os registros
const getAllTOP10 = async (req, res) => {
try {
const tops = await TOP_10.findAll({
attributes: { exclude: ['id'] },
});
return res.status(200).json(tops);
} catch (error) {
return res.status(500).json({ error: 'Erro ao buscar informações', error });
}
};
module.exports = {
getAllTOP10,
};
Arquivo principal da aplicação:
const express = require('express');
const sequelize = require('./config/db.config');
const top10Controller = require('./controllers/top10Controller');
const app = express();
app.use(express.json());
//verifica a conexão com o banco de dados
sequelize.authenticate()
.then(() => {
console.log('Conexão com o banco de dados estabelecida com sucesso.');
})
.catch((error) => {
console.error('Erro ao estabelecer conexão com o banco de dados:', error);
});
//Rota para buscar todos os registros
app.get('/tops', top10Controller.getAllTOP10);
const port = 3000;
// Sincronizar o modelo com o banco de dados
sequelize.sync({ force: false })
.then(() => {
console.log('Sincronização concluída.');
app.listen(port, () => console.log(`Server running on port ${port}`));
})
.catch((error) => {
console.error('Erro na sincronização', error);
});