Mongoose схемы вопросы организации
Возможно все намного проще сделать чем я думаю.
Пишу приложение для обучения, возможно пригодиться кому-либо. Подсчет расходов/доходов Использую Node js, Mongoose Названия категорий расходов- categories const costsSchema = new Schema( { costs: { categories: [{ 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"] } }], days: [{ date: Date, arrEvents: [{ categoriesDay: Number }] }] } }) Размер массива days может достигать 365 в год и в каждом дне номер соответствующий данным в cost.categories Например в days.arrEvents[0]. categoriesDay = 2 означает категория "Продукты" и цвет "red" В процессе работы могут меняться названия категорий, удаляться появляться новые, меняться цвет. Допустим есть данные за пару лет, тогда при, например, удалении одной из категорий изменится индекс и необходимо менять значения days.arrEvents[0]. categoriesDay В каждом дне за эти 2 года. Вариант решения: Ввести промежуточную сущность, которая будет записывать изменение. - при этом не нужно будет менять все дни -Но размер данных сущности будет расти с каждым изменением категорий Отдельный процесс по расписанию или по анализу загруженности сервера производит перезапись всех дней и обнуляет данные промежуточной сущности. 1. Есть ли решение по проще? 2. Еще если все делать по принципу разделяй и властвуй и для лучшего понимания кода другими разработчиками, то вместо моей одной большой (показано только часть схемы) разбить схему используя вложенные схемы? 3. Моя тема относится к категории антипаттерна преждевременной оптимизации? |
Часовой пояс GMT +3, время: 13:39. |