跟踪Firebase数据库中的扇出关系

时间:2017-05-17 07:18:34

标签: firebase firebase-realtime-database

如何跟踪扇出路径?
我不确定是否应将其称为relationship。反正...
我将采用以下结构作为示例。假设我们有某种形式的社交应用。每个用户都会添加他们的朋友并给出昵称。

  "friends": {
    "user2": {
      "user1": {
        "nickname": "wife",
        "uid": "user1"
      }
    },
    "user3": {
      "user1": {
        "nickname": "bff",
        "uid": "user1"
      }
    }
  }
  "users": {
    "user1": {
        "name": "Rubia Castangia",
        "gender": "Female",
        "age": 22
    },
    "user2": {
        "name": "Roxy Brightling",
        "gender": "Male",
        "age": 23
    },
    "user3":{
        "name": "Carole Delgardillo",
        "gender": "Female",
        "age": 35
    }
  }

我们说我们添加时间线&关注者具有以下结构的应用程序功能

"timeline": {
    "user2": {
        "post1234": {
            "text": "Feeling bored",
            "author_nick": "wife",
            "uid": "user1"
        }
    },
    "user3": {
        "post1235": {
            "text": "Feeling bored",
            "author_nickname": "bff",
            "uid": "user1"
        }
    }
},
"followers": {
    "user1": {
        "user2": true,
        "user3": true
    }
}

所以在那之后我们添加了另一个功能....然后它继续 所以关系是 例如,/timeline/userId/postId/author_nick更新此user2的{​​{1}}时,必须更新nicknamefriendId

随着应用程序变得越来越复杂,我倾向于忘记我必须扇出哪些路径。您是否有人使用特定工具来跟踪扇出路径之间的关系?

1 个答案:

答案 0 :(得分:1)

不需要任何工具 - 只需根据您的需要对数据库结构进行建模,并保持非规范化和尽可能平坦。

这样的事情怎么样:

users
  user1
    *user_data*
  user2
    *user_data*
    following
      user1: true
  user3
    *user_data*

nicknames
  user2
    user1: wife 
    user4: friendo
  user3
    user1: bff 

posts
   user1
     post1
       text: "bla"

大致这是你可以做的:

  • user2登录
  • 获取用户对象
  • 获取该用户的昵称地图
  • 对于“跟随”地图中的每个人:获取该用户的帖子
  • 显示帖子内容时,搜索昵称映射,否则显示用户名

够简单吗?