Как моделировать базы данных NoSQL (Firestore)?Просмотрите мой первый подход - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь смоделировать свою первую базу данных NoSQL (Firestore) для приложения, которое отражает решения демократических организаций (например, партий) об идеях.

Поэтому я был бы очень признателен, если бы вы могли просмотреть мой NoSQLконцепции и дать мне советы о том, как ее улучшить.Если вам понравилась идея и вы хотели бы поддержать проект, посмотрите git-repo: https://github.com/Donnerstagnacht/leftlife

Итак, я подумал о модели демократической идеи со следующими атрибутами:

    // attributes of the idea
    ideaID: string;
    location: string;
    image: string;
    video: string;
    text: string;
    hashtags?: Object[];
    date?: string;

Теперь пользователи могут выполнять следующие операции:

  1. Как у идеи
  2. Поделиться идеей
  3. Добавить комментарий
  4. Добавить предложение
  5. Группы могут поддержать идею

Пользователи и приложение также будут регулярно выполнять следующие операции:

  1. Пользователь ищет IdeaNames (SearchComponent)
  2. Пользователь ищет IdeaHashtags (SearchComponent)
  3. Пользователь ищет все идеи за промежуток времени (SearchComponent)
  4. Приложение запрашивает все идеи определенного события (EventComponent)
  5. Приложение запрашивает все идеи определенного человека (ProfileComponent)
  6. Приложение запрашивает все идеи определенной группы (GroupComponent)
  7. Приложение запрашивает идеи с наибольшим количеством лайков
  8. Приложение запрашивает идеи с самыми поддерживающими группами

Чтобы полностью представить идею, мне нужно получить различную информацию о:

  1. Автор
  2. Комментарии
  3. Предложения
  4. События
  5. Лайки
  6. Группы поддержки

Имея это в виду, я подумал создать 6 коллекций:

  1. Коллекция идей
  2. Коллекция пользователей
  3. Сборник комментариев
  4. Сборник предложений
  5. Сборник событий
  6. Сборник групп

... чтобы выполнить следующие запросы для отображения представления IdeaComponent

 // the idea has an author
    // query idea collection to retrieve
    userID: string;
    userName: string;
    userImage: string;

    // user can add comments
    // query comment collection to retrieve
    commentID: string;
    commentText: string;
    commentAuthorName: string; // userName
    commentAuthorID: string; // userID
    commentAuthorImage: string; // userImage

    // user can add proposals how to change the idea
    // query proposal collection to retrieve
    proposalID: string;
    proposalText: string;
    proposalAuthorName: string; // userName
    proposalAuthorID: string; // userID
    proposalAuthorImage: string; // userImage

    // user discuss the idea at real life events
    // query event collection to retrieve
    eventID: string;
    eventAuthorName: string;
    eventAuthorID: string;
    eventAuthorImage: string;

    // user can like the idea
    // query user collection to retrieve
    userID: string;
    userName: string;
    userImage: string;

    // groups can support the idea
    // query groups collection to retrieve
    groupID: string;
    groupName: string;
    groupImage: string;

1 Ответ

0 голосов
/ 19 февраля 2019

Существует два способа моделирования ваших данных:

1 Непосредственно из Firestore

Проверьте документацию: https://firebase.google.com/docs/firestore/data-model

2 Из вашего кода

ie: я удалил ideaID, потому что он будет сгенерирован автоматически.

export interface IdeaModel {
    location: string;
    image: string;
    video: string;
    text: string;
    hashtags?: Array<string>;
    date?: Date;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...