Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2020, 06:10   #1
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию Node js 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. Моя тема относится к категории антипаттерна преждевременной оптимизации?

Последний раз редактировалось Illusiony; 18.05.2020 в 20:35.
Illusiony вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перезапись элемента массива в документе MongoDb Mongoose Illusiony JavaScript, Ajax 0 26.02.2020 18:12
Node.Js + PHP Danil005 JavaScript, Ajax 3 19.07.2017 15:22
Блок схемы - построение схемы по коду на C# Boogeman Помощь студентам 1 06.06.2017 08:37
Онлайн игра на Node.js + SockJS или socket.io / Node.js freerunner JavaScript, Ajax 2 17.04.2014 11:01
Помоготе,пожайлуста, составить бкок-схемы по описанию схемы. sasha1988 Помощь студентам 0 26.05.2012 18:27