Эффективная структура данных для календаря с использованием MongoDB / Firebase - PullRequest
0 голосов
/ 19 февраля 2020

Привет. Я пытаюсь создать приложение, состоящее из функции календаря. Однако я не решаюсь выбирать дерево структуры данных, потому что я не уверен, насколько оно эффективно при выполнении поиска.

У меня будет объект календаря, состоящий из отдельных объектов дней. Эти отдельные объекты дня будут созданы, если на этот день будет запланировано задание или напоминание. Мне нравится использовать объект для календаря, потому что я могу просто использовать имя объекта дня в качестве ключа к go непосредственно для дня доступа к информации за этот день. Для eventsAndTasks я мог бы использовать массив или объект. Я предпочитаю генерировать имя ключа в качестве его идентификатора для задачи, чтобы я мог обращаться к нему напрямую как к объекту, а не к массиву, чтобы избежать итерации по всему массиву для нахождения точной задачи.

Пожалуйста, дайте мне знать, почему эта схема неэффективна для хранения данных или выполнения поиска, если я планирую использовать ее для mongodb. Я ценю помощь.

calendar: {
//objName will be used as a reference Id in the taskAndEvents object
  200219Wed: {
    unScheduledTask: ['task22', 'task23'],
    scheduledHours: {
      //hourOfDay: taskID
      8 : 'task1',
      9 : 'task2',
      10: '',
      11: '',
      12: '',
      13: '',
      14: '',
      15: '',
      16: '',
      17: '',
      18: '',
      19: '',
      20: '',
      21: '',
      22: '',

    }, 
    reminders: [
      'post question on forum', 'make data structure schema'
    ]
  },
  200220Thur: {
    8 : 'task3',
  9 : 'task4',
  10: '',
  11: '',
  12: '',
  13: '',
  14: '',
  15: '',
  16: '',
  17: '',
  18: '',
  19: '',
  20: '',
  21: '',
  22: '',},
  200221Fri: {},
  200222Sat: {},
}
//using obj
tasksAndEvents: {
  'task1': {
    title: 'cook',
    scheduledDay: '200219Wed'
  },
  'task2': {
      title: 'clean',
      scheduledDay: '200219Wed'},
  'task3': { 
      title: 'order shoes',
      scheduledDay: '200220Thur'},
  'task4': { 
      title: 'wash clothes',
      scheduledDay: '200220Thur'}
}
//using array
tasksAndEvents: [
  {
    id: 'task1',
    title: 'cook',
    scheduledDay: '200219Wed'
  },
  {
    id: 'task2',
    title: 'clean',
    scheduledDay: '200219Wed'
  },
  {
    id: 'task3',
    title: 'order shoes',
    scheduledDay: '200220Thur'
  },
  {
    id: 'task4',
    title: 'wash clothes',
    scheduledDay: '200220Thur'
  }
]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...