Валидация элементов массива и заполнение 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 массив?


Ответы (0 шт):