1
resposta

Dúvida sobre conversão automática

Estou usando MongoDb Atlas e o mongoose para criar o Schema, quando testo no POSTMAN, passando um número, por exemplo, para o campo categoria que esperava uma String, o número é convertido automaticamente para número, tem algum jeito de desativar essa conversão automática para todos os campos desse Schema e de todos os outros que tiverem? Quero que mostre no POSTMAN, uma mensagem dizendo que o campo x foi informado com o tipo de dado y mas esperava o tipo de dado z.

1 resposta

Olá, Luidi. Tudo bem?

O Mongoose oferece uma forma de validar os dados antes de inseri-los, o que pode ajudar a resolver o seu problema.

Para evitar que o Mongoose faça a conversão automática de tipos e garantir que ele retorne um erro quando o tipo de dado não corresponder ao esperado, você pode utilizar a validação de tipo no seu Schema. Aqui está um exemplo de como você pode fazer isso:

const mongoose = require('mongoose');

const categoriaSchema = new mongoose.Schema({
  categoria: {
    type: String,
    required: [true, 'O campo categoria é obrigatório'],
    validate: {
      validator: function(v) {
        return typeof v === 'string';
      },
      message: props => `O campo categoria foi informado com o tipo de dado ${typeof props.value}, mas esperava uma String.`
    }
  }
});

const Categoria = mongoose.model('Categoria', categoriaSchema);

Com essa configuração, quando você tentar enviar um número para o campo categoria, o Mongoose irá gerar uma mensagem de erro personalizada que você definiu, indicando que o tipo de dado não é o esperado.

Espero ter entendido e conseguido ajudar. Qualquer dúvida estou à disposição.

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