Firestore datamodelling статьи и категории - PullRequest
1 голос
/ 21 мая 2019

Контекст:

Я создаю своего рода вики-страницу на Angular.Вики-страница, вероятно, не будет содержать более 5000 статей.Я хочу найти наиболее эффективный способ (подкачки страниц), но думаю, что я слишком новичок в этом, чтобы наблюдать за последствиями одного варианта над другим.Конечно, я также хотел бы следовать соглашениям.

Проблема:

У меня есть коллекция статей в firestore, которые я хочу классифицировать.Статья должна принадлежать к одной категории.Категория может принадлежать одной категории (как подкатегория).

Теперь, какая модель данных предпочтительнее?И почему?

  1. Каждая статья, имеющая атрибут (тип справочного типа), относящийся к документу категории?

  2. Документы категории, имеющие массивссылки на статьи?

Firestore-root
   |
   --- categories (collection)
         |
         --- categoryId (document)
               |
               --- name: "Science" //Simple property
               |

               --- articles ['articleId1', 'articleId2', etc.. (long array)]

Что-то совершенно другое?

1 Ответ

1 голос
/ 21 мая 2019
  1. Каждая статья, имеющая атрибут (ссылочный тип данных), относящийся к документу категории?

Эта структура поможет вам, только если статья может принадлежать к одной категории.

Firestore-root
   |
   --- articles (collection)
         |
         --- articleId (document)
               |
               --- catoegory: "Science" //Simple property

Нет необходимости использовать ссылку на документ категории. Кроме того, для фильтрации ваших статей вы можете просто использовать where equal вызов.

  1. Категория документов, имеющих массив ссылок на статьи?

Эта структура поможет вам, если статья может принадлежать к одной или нескольким категориям.

Firestore-root
   |
   --- articles (collection)
         |
         --- articleId (document)
               |
               --- catoegories: ["Science", "Economy"] //Property of type array

Теперь для фильтрации ваших статей вы можете просто использовать вызов where array-contains.

  1. Что-то совершенно другое?

Оба решения широко используются при структурировании базы данных Cloud Firestore, но вы должны выбрать, какое из них больше подходит для варианта использования вашего приложения.

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