Sequelize TypeError: Невозможно преобразовать неопределенный или нулевой объект - PullRequest
1 голос
/ 16 января 2020

Я пытаюсь использовать Sequelize модель с существующей базой данных на SQL Server. Когда я пытаюсь извлечь данные из таблицы, используя необработанный запрос, это работает. Но когда я использую модель, я получаю следующую ошибку:

Error Occurred TypeError: Cannot convert undefined or null to object
    at Function.keys (<anonymous>)
    at Function.findAll (D:\Users\carlosli\Desktop\SigaWeb\node_modules\sequelize\lib\model.js:1692:47)
    at index (D:\Users\carlosli\Desktop\SigaWeb\src\controllers\consulta_controller.js:7:39)
    at Layer.handle [as handle_request] (D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\layer.js:95:5)
    at next (D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\layer.js:95:5)
    at D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\index.js:335:12)
    at next (D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\index.js:275:10)
    at Function.handle (D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\index.js:174:3)
    at router (D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\index.js:47:12)
    at Layer.handle [as handle_request] (D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\layer.js:95:5)
    at trim_prefix (D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\index.js:317:13)
    at D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\index.js:284:7
    at Function.process_params (D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\index.js:335:12)
    at next (D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\index.js:275:10)
    at jsonParser (D:\Users\carlosli\Desktop\SigaWeb\node_modules\body-parser\lib\types\json.js:110:7)
    at Layer.handle [as handle_request] (D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\layer.js:95:5)
    at trim_prefix (D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\index.js:317:13)
    at D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\index.js:284:7
    at Function.process_params (D:\Users\carlosli\Desktop\SigaWeb\node_modules\express\lib\router\index.js:335:12)

Модель:

const { Model, DataTypes } = require('sequelize');

class Consulta extends Model {
    static init(sequelize) {
        super.init({
            seqConsulta: {
                type: DataTypes.INTEGER,
                allowNull: false,
                primaryKey: true,
                comment: "null",
                field: 'SEQ_CONSULTA'
            },
            descNickUsuario: {
                type: DataTypes.STRING(30),
                allowNull: false,
                comment: "null",
                field: 'DESC_NICK_USUARIO'
            },
            memConsulta: {
                type: DataTypes.STRING(2048),
                allowNull: true,
                comment: "null",
                field: 'MEM_CONSULTA'
            },
            descConsulta: {
                type: DataTypes.STRING(128),
                allowNull: true,
                comment: "null",
                field: 'DESC_CONSULTA'
            }
        }, {
            sequelize,
            modelName: 'Consulta',
            tableName: 'CONSULTAS',
            freezeTableName: true
        })
    }
};
module.exports = Consulta;

Контроллер

const Consulta = require('../models/CONSULTAS');

module.exports = {
    async index(req, res) {
        let consulta
        try {
            consulta = await Consulta.findAll({
                where: {
                    seqConsulta: 1
                },
            });
        } catch (e) {
            console.log("Error Occurred", e)
        }

        return res.json(consulta);
    },
};

1 Ответ

0 голосов
/ 21 января 2020

Со мной случилось то же самое, и проблема заключалась в том, что я забыл импортировать свою модель в индекс базы данных, поэтому, возможно, попробуйте что-то вроде этого:

const Consulta = require('../app/models/Consulta ');
const models = [ Consulta ];
class Database {
  constructor() {
    this.init();
  }

  init() {
    this.connection = new Sequelize(DataBaseConfig);

    models.map(model => model.init(this.connection));
}
}
...