Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

"Unknown column 'NivelId' in 'field list'"

localhost:3000/class - GET

/models/class.js

'use strict';
const {
  Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
  class Class extends Model {
    static associate(models) {
      // define association here
      Class.hasMany(models.Enrollment, { foreignKey: 'class_id' })
      Class.belongsTo(models.Level)
      Class.belongsTo(models.Person)
    }
  }
  Class.init({
    date: DataTypes.DATEONLY
  }, {
    sequelize,
    modelName: 'Class',
  });
  return Class;
};

/controllers/ClassController.js

const database = require("../models/index.js")

module.exports = class Classes {
    static async getClasses(req, res) {
        try {
            const allClasses = await database.Class.findAll()
            return res.status(200).json({ data: allClasses })
        } catch (err) {
            return res.status(500).json({ data: err.message })
        }
    }

    static async getClass(req, res) {
        const { id } = req.params
        try {
            const oneClass = await database.Class.findOne({ where: { id: Number(id) } })
            return res.status(200).json({ data: oneClass })
        } catch (err) {
            res.status(500).json({ data: err.message })
        }
    }

    static async createClass(req, res) {
        const info = req.body
        try {
            const newClass = await database.Class.create(info)
            return res.status(201).json({ data: newClass })
        } catch (err) {
            res.status(500).json({ data: err.message })
        }
    }

    static async updateClass(req, res) {
        const { id } = req.params
        const info = req.body
        try {
            await database.Class.update(info, { where: { id: Number(id) } })
            const updatedClass = await database.Class.findOne({ where: { id: Number(id) } })
            return res.status(200).json({ data: updatedClass })
        } catch (err) {
            return res.status(500).json({ data: err.message })
        }
    }

    static async deleteClass(req, res) {
        const { id } = req.params
        try {
            await database.Class.destroy({ where: { id: Number(id) } })
            return res.status(200).json({ data: "Class Deleted!" })
        } catch (err) {
            return res.status(500).json({ data: err.message })
        }
    }
}

Os path's localhost:3000/person e localhost:3000/level, estou conseguindo realizar chamadas GET's, porém ao chamar alguma tabela que há FK's, é retornado este erro

localhost:3000/class -> "Unknown column 'LevelId' in 'field list'"

localhost:3000/enrollment -> "Unknown column 'ClassId' in 'field list'"

Query rodada pelo Sequelize:

Executing (default): SELECT `id`, `status`, `createdAt`, `updatedAt`, `class_id`, `ClassId`, `PersonId`, `student_id` FROM `Enrollments` AS `Enrollment`;
1 resposta
solução!

Consegui resolver, adicionei estes campos que esqueci:

/models/class.js


      Class.hasMany(models.Enrollment, { foreignKey: 'class_id' })
      Class.belongsTo(models.Level, {foreignKey: 'level_id'})
      Class.belongsTo(models.Person, { foreignKey: 'teacher_id'})

/models/enrollment.js

      Enrollment.belongsTo(models.Class, { foreignKey: 'class_id'})
      Enrollment.belongsTo(models.Person, { foreignKey: 'student_id'})

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software