@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
объекта валидатора. Если валидация проходит успешно, документ будет сохранен в базу данных.
@william_stoltenberg
Таким образом, пользовательские валидаторы в Mongoose позволяют определить специальные правила валидации для полей в модели, что дает большую гибкость и контроль над данными, сохраняемыми в базу данных.