1
resposta

"Column 'deletedAt' cannot be null"

Estou recebendo esse erro no Postman quando tento restaurar uma pessoa "Column 'deletedAt' cannot be null" e não sei o que pode ser, no meu terminal do VSCode ele retorna o seguinte: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Coloquei dois console.log para identificar por onde o programa está passando, e acaba que ele chega na função restore e não executa ela. Meu código de PessoaController.js

const database = require('../models')
.
.
.
static async restauraPessoa(req, res) {
        const { id } = req.params
        try {
            console.log("Antes do restore");
            await database.Pessoas.restore({where: { id: Number(id) }})
            console.log("Depois do restore");
            return res.status(200).json({ mensagem: `id ${id} restaurado` })
        }
        catch(erro) {
            return res.status(500).json(erro.message)
        }
    }

Meu código de models/pessoa.js

'use strict';
const { Model } = require('sequelize');

module.exports = (sequelize, DataTypes) => {
  class Pessoas extends Model {
    static associate(models) {
      Pessoas.hasMany(models.Turmas, {
        foreignKey: 'docente_id'
      })
      Pessoas.hasMany(models.Matriculas, {
        foreignKey: 'estudante_id'
      })
    }
  };
  Pessoas.init({
    nome: DataTypes.STRING,
    ativo: DataTypes.BOOLEAN,
    email: DataTypes.STRING,
    role: DataTypes.STRING
  }, 
  {
    sequelize,
    modelName: 'Pessoas',
    paranoid: true
  });

  return Pessoas
};

E a migration usada para adicionar a coluna "deletedAt"

'use strict'
module.exports = {
    up: (queryInterface, Sequelize) => {
        return queryInterface.addColumn('Pessoas', 'deletedAt', {
            allowNull: true,
            type: Sequelize.DATE
        })
    },
    down: (queryInterface) => {
        return queryInterface.removeColumn('Pessoas', 'deletedAt')
    }
}
1 resposta

Boa tarde Stéphani, tudo certo?

Talvez tenha algum resquício de uma migration anterior, onde você tenha criado com uma coluna chamada deletedAt e ela tenha o parâmetro allowNull: false. Realmente é um comportamento inesperado mas pode acontecer.

Mas eu vi que você terminou a formação, então creio que tenha encontrado uma solução para esse problema. Você poderia subir o projeto em um repositório público e enviar o link aqui caso ainda tenha o código disponível e queira compartilhar conosco?

Espero ter ajudado e bons estudos! Qualquer coisa estarei no aguardo.

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