1
resposta

[Dúvida] Required não funciona

Apesar dos campos estarem com o parametro required, ele salva no banco mesmo se eu não passar esses dados sem dar erro. Tanto para o livro quanto para o autor. Tentei com Save() e com Create()

Autor.js

import mongoose from "mongoose";

export const autorSchema = new mongoose.Schema({
  id: { type: mongoose.Schema.Types.ObjectId },
  nome: { 
    type: String, 
    require: [true, "O Nomde do(a) autor(a) é obrigatório"] 
  },
  nacionalidade: { type: String }
}, {versionKey: false});

export const autor = mongoose.model("autores", autorSchema);

autorController.js: cadastrar com Save()

static async cadastrarAutor(req, res, next){
    try {
      const novoAutor = new autor(req.body);
      const resultado = await novoAutor.save();
      res.status(201).json({ message: "Criado com sucesso", autor: resultado });
    } catch (error) {
      next(error);
    }
  }

Retorno do postman: Retorno do postman

1 resposta

Olá, Ana!

Pelo que você descreveu e pelo código fornecido, parece que há um pequeno erro de digitação na definição do esquema do autor no seu arquivo Autor.js. No campo nome, você usou require em vez de required. Isso faz com que o Mongoose não aplique a validação de obrigatoriedade como esperado.

Aqui está a correção que você precisa fazer:

import mongoose from "mongoose";

export const autorSchema = new mongoose.Schema({
  id: { type: mongoose.Schema.Types.ObjectId },
  nome: { 
    type: String, 
    required: [true, "O Nome do(a) autor(a) é obrigatório"] // Aqui estava 'require', mas o correto é 'required'
  },
  nacionalidade: { type: String }
}, {versionKey: false});

export const autor = mongoose.model("autores", autorSchema);

Após corrigir isso, o Mongoose deve começar a aplicar a validação corretamente, e você não poderá salvar ou criar um autor sem especificar o nome.

Além disso, verifique se o seu manipulador de erros está configurado corretamente para capturar e responder com erros de validação, conforme descrito no contexto do exercício.

Espero que essa correção resolva o problema que você está enfrentando. Experimente fazer a alteração e veja se o comportamento agora está como esperado. Lembre-se de reiniciar o servidor Node.js após fazer alterações no código para que as mudanças tenham efeito.

Espero ter ajudado e bons estudos!

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