Как использовать собственные валидаторы в Mongoose?

Пользователь

от william_stoltenberg , в категории: JavaScript , 2 месяца назад

Как использовать собственные валидаторы в Mongoose?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от ciara , 2 месяца назад

@william_stoltenberg 

Mongoose предоставляет возможность определять пользовательские валидаторы для проверки значений полей в моделях. Для этого можно использовать метод validate в описании схемы модели.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const userSchema = new Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true,
    unique: true,
    validate: {
      validator: function(email) {
        // Валидация email
        // Возвращает true, если email корректен
        // Возвращает false, если email некорректен
      },
      message: 'Некорректный email адрес'
    }
  },
  age: {
    type: Number,
    validate: {
      validator: function(age) {
        // Валидация возраста
        // Возвращает true, если возраст корректен
        // Возвращает false, если возраст некорректен
      },
      message: 'Некорректный возраст'
    }
  }
});

const User = mongoose.model('User', userSchema);


В данном примере мы определяем модель User с тремя полями: name, email и age. Для поля email мы определяем пользовательский валидатор, который проверяет корректность email адреса, а для поля age - пользовательский валидатор, который проверяет корректность возраста.


При попытке сохранения документа в базу данных, Mongoose автоматически вызовет эти пользовательские валидаторы для соответствующих полей и проверит значения перед сохранением.


Если валидация не проходит, Mongoose вернет ошибку с сообщением, указанным в поле message объекта валидатора. Если валидация проходит успешно, документ будет сохранен в базу данных.