Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Por algum motivo o codigo não relata o erro de campo vazio

    import mongoose from "mongoose";

    mongoose.Schema.Types.String.set("validade", {
      validador: (valor) => valor.trim() !== "",
      message: "Um dos campos foi dado em branco"
});
  import "./ValidadorGlobal.js";
  import autores from "./Autor.js";
  import livros from "./Livro.js";



  export { autores, livros };

por algum motivo não está apresentando nenhum erro de campo vazio no postman, não consigo achar o erro. Não funciona sem o Trim também.

8 respostas

Olá Estevão! Tudo bem?

O código que você postou para o validador global parece correto, mas há um detalhe que pode estar causando o problema. No método set, a propriedade deve ser chamada de "validate" e não "validade". Isso pode ser apenas um erro de digitação, mas é importante garantir que o nome da propriedade esteja correto:

import mongoose from "mongoose";

mongoose.Schema.Types.String.set("validate", {
  validator: (valor) => valor.trim() !== "",
  message: "Um dos campos foi dado em branco"
});

Além disso, certifique-se de que o arquivo ValidadorGlobal.js está sendo importado corretamente antes de qualquer definição de schema no seu projeto. Pelo que você descreveu, parece que isso já está sendo feito no arquivo index.js, mas vale a pena verificar se não há nenhum erro de caminho ou se o arquivo está realmente sendo executado antes das definições dos modelos.

Depois de fazer essas verificações, tente novamente enviar uma requisição pelo Postman para ver se a validação está funcionando como esperado. Se ainda não funcionar, pode ser útil verificar os logs do servidor para ver se há alguma mensagem de erro ou aviso que possa ajudar a identificar o problema.

Espero ter ajudado e bons estudos!

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

Toda "variavel" q coloco no lugar do validate, faz com que o server consiga abrir, quando coloco da forma correta ele trava o server com esse erro:

E:\node.js_2\api-node-express-2\node_modules\mongoose\lib\schematype.js:921
      throw new Error(msg);
            ^

Error: Invalid validator. Received (undefined) undefined. See https://mongoosejs.com/docs/api.html#schematype_SchemaType-validate
    at SchemaType.validate (E:\node.js_2\api-node-express-2\node_modules\mongoose\lib\schematype.js:921:13)
    at SchemaType.validate (E:\node.js_2\api-node-express-2\node_modules\mongoose\lib\schematype.js:923:10)
    at SchemaString.SchemaType (E:\node.js_2\api-node-express-2\node_modules\mongoose\lib\schematype.js:113:18)
    at new SchemaString (E:\node.js_2\api-node-express-2\node_modules\mongoose\lib\schema\string.js:27:14)
    at Schema.interpretAsType (E:\node.js_2\api-node-express-2\node_modules\mongoose\lib\schema.js:1086:22)
    at Schema.path (E:\node.js_2\api-node-express-2\node_modules\mongoose\lib\schema.js:721:27)
    at Schema.add (E:\node.js_2\api-node-express-2\node_modules\mongoose\lib\schema.js:567:14)
    at new Schema (E:\node.js_2\api-node-express-2\node_modules\mongoose\lib\schema.js:131:10)
    at file:///E:/node.js_2/api-node-express-2/src/models/Autor.js:3:21
    at ModuleJob.run (node:internal/modules/esm/module_job:234:25)

Olá, Estevão! Peço desculpa pela demora em responder.

Nesse caso recomendo que você compartilhe comigo todo o seu código, assim poderei fazer testes em outros trechos de código que podem estar afetando o que está retornando erro.

Fico no aguardo e à disposição

Tem alguma outra forma sem ser no git? está dando uma problema de transferecia também. :/

Bom dia, Estevão!

Você pode compartilhar através do Drive do Google, mas lembre que não é necessário mandar a pasta "node_modules" já que dar para baixar ela ao rodar o npm install.

https://drive.google.com/drive/folders/1QsfKivVf4DaSLVmjo2JmUtlDmlZh4xPz?usp=drive_link

consegui. Obrigado!!

obs: corrigi o link

solução!

Bom dia Estevão!

Acho que vou ter que trocar de óculos kkk

Brincadeira a parte, o seu problema estava no mesmo trecho de código que você havia compartilhado no início. Como o nome do atributo que estava entre parênteses era o errado, estava "validade" em vez de "validate", a propriedade logo a baixo dele também estava, você escrever como validador sendo que é validator.

Segue o trecho de código corrigido:

import mongoose from "mongoose";

mongoose.Schema.Types.String.set("validate", {
  validator: (valor) => valor.trim() !== "",
  message: "Um dos campos foi dado em branco"
});

Espero ter ajudado!

ah, acho q vou ter que fazer uns exames de vista tambem!! Obrigado pela ajuda!