Как использовать валидацию данных в Mongoose?

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

от rudolph_senger , в категории: JavaScript , год назад

Как использовать валидацию данных в Mongoose?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от jedidiah.brown , год назад

@rudolph_senger Mongoose предоставляет несколько способов для валидации данных перед сохранением в базе данных MongoDB.


Один из способов - это использование схемы (Schema) Mongoose. В схеме Mongoose вы можете определить типы данных, ограничения и валидаторы для каждого поля. Например, вы можете определить, что поле "имя" должно быть типа "строка" и не может быть пустым. Вы также можете определить валидаторы для поля, например, для проверки уникальности значения поля.

Вот пример схемы, которая валидирует данные модели пользователя:

 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
const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true,
    unique: true,
    validate: {
      validator: function(email) {
        const emailRegex = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
        return emailRegex.test(email);
      },
      message: props => `${props.value} is not a valid email address!`
    }
  },
  age: {
    type: Number,
    min: 18,
    max: 100
  }
});

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

В этом примере мы определяем схему Mongoose для модели пользователя, которая содержит поля "имя", "электронная почта" и "возраст". Поле "имя" обязательно для заполнения, поле "электронная почта" также обязательно и должно быть уникальным. Для поля "электронная почта" мы определяем валидатор, который проверяет, соответствует ли значение поля заданному регулярному выражению для электронной почты. Если валидация не проходит, возвращается сообщение об ошибке.

Вы можете создать экземпляр модели и вызвать метод save() для сохранения в базе данных. При сохранении Mongoose автоматически валидирует данные и возвращает ошибку, если данные не соответствуют определению схемы. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
const user = new User({
  name: 'John Doe',
  email: '[email protected]',
  age: 25
});

user.save(function (err) {
  if (err) {
    console.log(err);
  } else {
    console.log('User saved successfully!');
  }
});

Если вы попытаетесь сохранить модель пользователя без указания обязательного поля "имя", вы получите ошибку валидации.