Валидация элементов массива и заполнение default значением массива в Schema mongoose
Имеется schema mongoose. Это не вся схема, а лишь интересующий участок:
categories:
{
name: {
type: [String],
minlength:[1,"Вы не ввели имя категории"],
maxlength:[40,"Слишком длинное имя категории"],
unique: true,
default: ["Жилье","Коммунальны услуги","Продукты","Проезд","Интернет",
"Сотовая связь","Одежда","Медикаменты","Хозяйственные расходы","Покупка техники",
"Развлечения и отдых","Подарки к дню рождения","Прочее"]
},
// name: [{
// type: String,
// minlength:[1,"Вы не ввели имя категории"],
// maxlength:[40,"Слишком длинное имя категории"],
// unique: true,
// default: ["Жилье","Коммунальны услуги","Продукты","Проезд","Интернет",
// "Сотовая связь","Одежда","Медикаменты","Хозяйственные расходы","Покупка техники",
// "Развлечения и отдых","Подарки к дню рождения","Прочее"]
// }],
color:{
type: [String],
default:["green","green","green","green","green","green","green","green","green",
"green","green","green","green"]
},
Поле name это массив с defaul значением- заполненным массивом. Это работает, но не работает валидация элементов массива :
minlength:[1,"Вы не ввели имя категории"],
maxlength:[40,"Слишком длинное имя категории"]
Я попробовал сделать по другому в закомментированном коде. В итоге валидация стала работать, но defaul заполнение массива уже не работает. Есть способ заполнить такой массив с помощью дополнительной функции к Schema.pre(). но этот вариант запутывает код и это решение мне не нравится. Есть так же вариант с вложенной схемой.
Но неужели нет варианта по проще чтобы работала и валидация элементов массива и заполнялось default массив?