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

[Bug] A validação global não está funcionando

Olá!

Estou tendo problemas com a validação global em meu projeto. Aparentemente a validação não está funcionando, pois não recebo o retorno após tentar criar um autor com o campo de nacionalidade em branco. Já fiz as adequações nos arquivos controllers, alterando os imports para o models/index.js

Arquivo models/index.js

import { autor } from "./Autor.js";
import livro from "./Livro.js"
import "./validadorGlobal.js";

export {autor, livro};

Validador global

import mongoose from "mongoose";

mongoose.Schema.Types.String.set("validate", {
    validator: (valor) => valor !== "",
    message: ({ path }) => `O campo ${path} foi fornecido em branco.`
  });

JSON da api

{
        "nacionalidade": "",
        "nome": "guilherme"
}

Na resposta da API, o autor é criado com sucesso.

Poderiam me ajudar?

1 resposta
solução!

Olá Guilherme! Tudo bem?

Pelo que você descreveu, parece que a validação global não está sendo aplicada, pois a criação do autor ocorre mesmo com o campo de nacionalidade em branco.

Aqui estão algumas sugestões para tentar resolver esse problema:

  1. Ordem de Importação: Certifique-se de que o arquivo validadorGlobal.js está sendo importado antes da definição dos modelos. No seu models/index.js, o import de validadorGlobal.js deve vir antes dos imports de Autor.js e Livro.js. Isso garante que a configuração global do validador seja aplicada antes que os modelos sejam criados.

    import "./validadorGlobal.js";
    import { autor } from "./Autor.js";
    import livro from "./Livro.js";
    
    export { autor, livro };
    
  2. Verifique o Schema: Certifique-se de que o campo nacionalidade está realmente definido como tipo String no seu schema. Pelo que você compartilhou, parece estar correto, mas vale a pena revisar o arquivo Autor.js para garantir que não haja nenhum erro de digitação ou configuração.

  3. Reinicie o Servidor: Após fazer alterações nos arquivos de configuração ou nos modelos, sempre reinicie seu servidor Node.js para garantir que as mudanças sejam aplicadas.

Se, após essas verificações, o problema persistir, peço que compartilhe todo o seu projeto para que eu possa fazer testes para identificar a inconsistência do código.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.