Mongodb фильтрует все вложенные данные - PullRequest
0 голосов
/ 26 мая 2020

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

  1. Встроенный

[{
    "label": "Landing",
    "roles": ["sa", "reguler", "hc"]
  },
  {
    "label": "Profile",
    "roles": ["reguler"]
  },
  {
    "label": "Leave",
    "roles": ["hc","reguler"],
    "children": [{
        "label": "Create Leave",
        "roles": ["reguler"]
      },
      {
        "label": "Maintain Leave",
        "roles": ["reguler"]
      },
      {
        "label": "Master Leave",
        "roles": ["hc"]
      }
    ]
  },
  {
    "label": "Absence",
    "roles": ["reguler"],
    "children": [{
        "label": "Clock In",
        "roles": ["reguler"]
      },
      {
        "label": "Clock Out",
        "roles": ["reguler"]
      }
    ]
  },
  {
    "label": "Logout",
    "roles": ["sa", "reguler", "hc"]
  }
]
ссылка

[{
    "mIndex": 1,
    "parentIndex": null,
    "label": "Landing",
    "roles": ["sa", "reguler", "hc"]
  },
  {
    "mIndex": 2,
    "parentIndex": null,
    "label": "Profile",
    "roles": ["reguler"]
  },
  {
    "mIndex": 3,
    "parentIndex": null,
    "label": "Leave",
    "roles": ["reguler"]
  },
  {
    "mIndex": 4,
    "parentIndex": null,
    "label": "Absence",
    "roles": ["reguler"]
  },
  {
    "mIndex": 5,
    "parentIndex": null,
    "label": "Logout",
    "roles": ["sa", "reguler", "hc"]
  },
  {
    "mIndex": 6,
    "parentIndex": 3,
    "label": "Create Leave",
    "roles": ["reguler"]
  },
  {
    "mIndex": 7,
    "parentIndex": 3,
    "label": "Maintain Leave",
    "roles": ["reguler"]
  },
  {
    "mIndex": 8,
    "parentIndex": 4,
    "label": "Clock In",
    "roles": ["reguler"]
  },
  {
    "mIndex": 9,
    "parentIndex": 4,
    "label": "Clock Out",
    "roles": ["reguler"]
  },
  {
    "mIndex": 10,
    "parentIndex": 3,
    "label": "Master Leave",
    "roles": ["hc"]
  },
]

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

[{
    "label": "Landing",
    "roles": ["reguler"]
  },
  {
    "label": "Profile",
    "roles": ["reguler"]
  },
  {
    "label": "Leave",
    "roles": ["reguler"],
    "children": [{
        "label": "Create Leave",
        "roles": ["reguler"]
      },
      {
        "label": "Maintain Leave",
        "roles": ["reguler"]
      }
    ]
  },
  {
    "label": "Absence",
    "roles": ["reguler"],
    "children": [{
        "label": "Clock In",
        "roles": ["reguler"]
      },
      {
        "label": "Clock Out",
        "roles": ["reguler"]
      }
    ]
  },
  {
    "label": "Logout",
    "roles": ["reguler"]
  }
]

, который не может быть «Master Leave» (относится к ролям h c). Я пытался использовать раскручивание (встроенное) с ролями, но я думаю, что это невозможно, потому что вложенные дочерние элементы не будут иметь ограничений. Я имею в виду, что позже "Create Leave" можно будет иметь детей. В противном случае в ссылочном стиле его сложно группировать по родительскому элементу, это будет неограниченная группа. Пожалуйста, помогите мне ..

...