Как эффективно моделировать динамические данные в MongoDB и Mongoose - PullRequest
0 голосов
/ 19 марта 2019

Я создаю веб-сайт с использованием стека MERN, и мне нужно обрабатывать много динамических данных.Поэтому я пытаюсь понять, как эффективно моделировать эти переменные данные, учебный материал также должен быть полезен.Или разные способы сделать это со своими плюсами и минусами.

Еще одна вещь, я использую Mongoose для создания схем.Таким образом, примеры или материалы в динамических данных с mongoose также должны быть полезны.


Кроме того, я дам вам и пример аналогичной ситуации, с которой мне нужно иметь дело, но мне не нужно строгоВы поможете мне со следующим примером, только если вы хотите, мне просто нужен материал, чтобы понять, как работать с динамическими данными и как правильно их моделировать.Таким образом, для людей, которые хотят мне помочь, вот пример, кстати, это лишь малая часть того, что я проектирую, но оно покрывает большинство моих сомнений в отношении динамических данных в MongoDB.Я пытался объяснить это, как мог, поэтому, если вы этого не понимаете, не беспокойтесь:

Прежде всего, есть компании и пользователи

  • Компания может иметьмного пользователей
  • Пользователь может быть только частью 1 компании

Есть то, что мы называем модулями

  • Компания может получить доступ к нескольким модулям (Company Blueможет получить доступ к модулям A и B)
  • Доступ к модулю может быть получен несколькими компаниями (Доступ к модулю A могут осуществлять компании Red и Company Blue)
  • Пользователь может получить доступ к нескольким модулям (доколичество модулей, к которым компания может получить доступ, если компания может получить доступ к 4 модулям, пользователь может получить доступ к 4 модулям или меньше)
  • Доступ к модулю может получить несколько пользователей из разных компаний.
  • Модуль может иметь определенные поля или столбцы, например:

    • Модуль A:
      • Элементы
      • Описание
      • Категория
      • Год
      • Основная задача
    • Модуль B:
      • Артикул
      • Тип
      • Номер
      • Год
      • Обязательство
  • В будущем могут быть добавлены новые поля.Пример: однажды мы можем добавить, потому что это было необходимо по какой-то причине к модулю B, в столбце «Риск» получится что-то вроде этого.

    • Модуль B:
      • Артикул
      • Тип
      • Номер
      • Год
      • Обязательство
      • Риск

    Каждая компания может выбирать, какие столбцы / поля могут видеть их пользователи, из какого модуля и в каком порядке.Например, если компания Blue получит доступ к модулю B, они увидят что-то вроде этого:

    • Модуль B:
      • Основная статья
      • Риски
      • Категория
      • #
      • Год выпуска
  • Каждый модуль может иметь строки, а строки имеют связанные значенияк каждому столбцу модуля:

    • Модуль B - строка 1:

      • Артикул: 32
      • Тип: Script
      • Номер: 7223
      • Год: 2017
      • Обязательство: N / A
      • Риск: Излучение
    • Модуль B -Строка 2:

      • Артикул: 117
      • Тип: Заказ
      • Номер: 153
      • Год: 1957
      • Обязательство:Сделайте что-нибудь, чтобы что-то предотвратить
      • Риск: ущерб окружающей среде
  • Компания может получить доступ к нескольким строкам

  • Строка может быть доступна нескольким компаниям
  • Когда пользователь получает доступ к модулю, он видит все тон гребет, к которым компания имеет доступ.
  • Эти модули могут получать отзывы или нет в его строках, поэтому я не знаю, как это называется, но это будет что-то вроде рецензируемого, истинного или ложного.
  • Если модуль является рецензируемым, все его строки могут получать рецензии, в противном случае ни одна из строк не может получать рецензии.
  • Если модуль рецензируемый, каждая компания имеет конкретный отзывформат для определенного модуля, они могут иметь разные поля обзора, и главная ценность обзора. Эти обзоры они могут выбрать, если будут числовыми, %, списком данных [{label: Good, value = 1}, {label: Regular, значение: 0.5}, {label: Bad, value: 0}] список не является фиксированным, это может быть Отлично, хорошо, хорошо, плохо, очень плохо и т.д ...
  • И поля обзора варьируются в зависимости от компании. например:
    • Формат отзыва для компании Blue:
      • Звезды (Основная оценка) [от 0 до 5]
      • Причина значения
      • Дата
    • Формат отзыва для компании Red:
      • Процент успеха (значение основного обзора) [от 0 до 100]
      • Подробнее
      • Документы прилагаются
      • Дата последней проверки
...