intermediate
Validation
Валидируйте document shape на application boundary, сохраняя alignment с database constraints и API validation.
Валидаторы Mongoose выполняются на путях документа перед save или на настроенных путях update. Они дополняют — но не заменяют — валидацию API, авторизацию и уникальные индексы.
email: {
type: String,
required: true,
validate: { validator: isEmail, message: 'invalid email' },
},
sku: { type: String, unique: true } // создаёт индекс, не runtime-валидатор
На интервью: required-поля, кастомные валидаторы, `runValidators` при update и почему уникальность требует индекса и обработки duplicate key в приложении.
Типовые ошибки: `unique: true` как обычный валидатор; update без валидаторов; валидация вместо auth или транзакционных правил.
Компромисс — защита на слое персистентности против дублирования правил в API и БД.
Чеклист:
- Валидируйте вход API до персистентности.
- Используйте индексы для уникальности.
- Проверяйте поведение валидаторов при update.
- Явно обрабатывайте duplicate key.