Como usar validadores personalizados Mongoose

introdução

a validação de um esquema é sempre recomendada. As validações tornam o banco de dados melhor estruturado e evitam a inserção de dados ruins nele. O Mongoose fornece vários validadores integrados, como required, minlength, maxlength, min e max. Esses validadores integrados são muito úteis e simples de configurar. Mas as validações no mongoose não se limitam apenas aos validadores integrados. Também podemos criar validações personalizadas. Neste artigo, discutiremos como criar validadores personalizados mongoose.

definindo esquema sem validações

temos uma coleção de detalhes e este é o esquema definido para ele.

1
2
3
4
5
6
7
8
9
10
11
deixe os detalhes = Esquema novo({
nome: {
tipo: String
},
> idade: {
tipo:},
locais: {
tipo de:
}
});

Observar o terceiro campo, i.e. locais. Seu tipo é a matriz de strings. A partir de agora, não há validações. Isso significa que, ao inserir documentos nesta coleção, podemos pular qualquer um desses campos ou até mesmo pular todos eles. Vamos tentar inserir um documento vazio usando o shell mongo.

1
2
3
> db.informacao.inserir({})
WriteResult({ “nInserted” : 1 })
>

Aqui passamos um objeto vazio e é inserido na coleção. Mas isso está certo? Qual é o objetivo deste documento? É por isso que temos validações para encontrar tais situações. Podemos usar validadores integrados, mas adicionaremos um validador personalizado ao campo locais.

validadores personalizados

como o campo Tipo de locais é a matriz de string. Atualmente, a matriz a ser inserida pode conter qualquer número de itens. Vamos criar uma validação aqui. Observe o campo locais agora.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
deixe os detalhes = Esquema novo({
nome: {
tipo: String
},
> idade: {
type: Number
},
locations: {
type:,
validate: {
validator: function(arr) {
return arr.comprimento > 2;
},
mensagem: “você deve fornecer mais de 2 locais.”
}
}
});

Nós adicionamos um novo campo, validar.

1
2
3
4
5
6
validar: {
validador: função (arr) {
retorno arr.comprimento > 2
},
mensagem :’ você deve fornecer mais de 2 locais.’
}

temos que usar a palavra-chave validate para criar validações personalizadas. Como seu valor, teremos um objeto que contém a validação.

1
2
3
avaliador: função (arr) {
retorno arr.comprimento > 2
},

definimos uma função como a validação que verificará se o comprimento da matriz é maior que dois ou não. Se a validação for violada, ela lançará um erro que contém uma mensagem que especificamos no próximo campo.

1
mensagem: ‘Você deve fornecer mais de 2 locais.’

então, vamos verificar isso usando a ferramenta carteiro.

imagem de Gyazo

ele gera um erro indicando “você deve fornecer mais de 2 locais.”porque tentamos inserir dois valores.

conclusão

a validação é uma parte importante do esquema mongoose. Junto com validadores integrados, o mongoose também oferece a opção de criar validações personalizadas. Criar validações personalizadas também é muito simples. Validações personalizadas podem ser usadas onde os validadores integrados não atendem aos requisitos.

Deixe uma resposta

O seu endereço de email não será publicado.