3
respostas

Campo não obrigatório aparece mensagem de validação

Tenho o seguinte código:

import mongoose from "mongoose";

const generosPermitidos = {
  Ação: true,
  Animação: true,
  Aventura: true,
  Chanchada: true,
  "Cinema catástrofe": true,
  Comédia: true,
  "Comédia romântica": true,
  "Comédia dramática": true,
  "Comédia de ação": true,
  Cult: true,
  Documentários: true,
  Drama: true,
  Espionagem: true,
  Erótico: true,
  Fantasia: true,
  Faroeste: true,
  "Ficção científica": true,
  Séries: true,
  Guerra: true,
  Machinima: true,
  Musical: true,
  "Filme noir": true,
  Policial: true,
  Pornochanchada: true,
  Pornográfico: true,
  Romance: true,
  Suspense: true,
  Terror: true,
  Trash: true,
};

const filmeSchema = new mongoose.Schema(
  {
    id: { type: String },
    nome: { type: String, required: [true, "O nome do filme é obrigatório"] },
    ano: {
      type: Number,
      required: [true, "O ano de lançamento é obrigatório"],
      min: [1895, "O ano deve estar entre 1895 e 2050"],
      max: [2050, "O ano deve estar entre 1895 e 2050"],
    },
    diretor: { type: String },
    Oscar: { type: Boolean },
    genero: {
      type: [String],
      ref: String,
      required: true,
      validate: {
        validator: function (val) {
          return val.every((v) => generosPermitidos[v]);
        },
        message: "Um ou mais gêneros inseridos são inválidos",
      },
    },
  },
  {
    versionKey: false,
  }
);

const filmes = mongoose.model("filmes", filmeSchema);

export default filmes;

Meu campo diretor não é obrigatório, mas quando segui o passo a passo da aula mostra como se fosse obrigatório.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Teria alguma forma de resolver isso? Pensei no front fazer uma validação para se fosse em branco, inserir algo no campo, mas no backend existe alguma forma?

3 respostas

uma pergunta vc preencheu o campo genero? pq na print que vc mandou ele está vazio, mas no código ele está como required

Marquei sim, é que a SS cortou, mas genero é um array com 2 generos cadastrados.

você consegue me mandar o código completo?