如何为NoSQL数据库建模(Firestore)?回顾一下我的第一种方法

时间:2019-02-18 17:30:10

标签: database typescript nosql google-cloud-firestore

我尝试为第一个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. App询问某人(ProfileComponent)的所有想法
  6. App询问特定组(GroupComponent)的所有想法
  7. App要求最喜欢的想法
  8. App寻求支持力度最大的组的想法

要完全呈现想法视图,我必须检索有关以下内容的不同信息:

  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 :(得分:0)

有两种方法可以对数据建模:

1直接来自Firestore

检查文档: https://firebase.google.com/docs/firestore/data-model

2来自您的代码

即:我删除了ideaID,因为它将自动生成。

export interface IdeaModel {
    location: string;
    image: string;
    video: string;
    text: string;
    hashtags?: Array<string>;
    date?: Date;
}