【问题标题】:Keeping track of fan-out relationships in Firebase Database跟踪 Firebase 数据库中的扇出关系
【发布时间】:2017-05-17 21:10:47
【问题描述】:

您如何跟踪扇出路径?
我不确定是否应该将其称为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 更新 nickname 时更新 friendId 此处:/friends/userId/friendId/nickname

随着应用变得越来越复杂,我往往会忘记必须扇出哪些路径。你们是否使用任何特定工具来跟踪扇出路径之间的关系?

【问题讨论】:

  • @AtifAbbAsi 以上不是我的真实结构。只是为了这个问题想出来的。
  • 如果您以图片形式发布您的数据库结构,我很容易帮助您@Atu stackoverflow.com/questions/38181973/…

标签: firebase firebase-realtime-database


【解决方案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 登录
  • 获取用户对象
  • 获取该用户的昵称映射
  • 对于“关注”地图中的每个人:获取该用户的帖子
  • 显示帖子内容时,搜索昵称映射,否则显示用户名

够简单吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 2019-01-24
    • 2012-07-19
    • 2021-07-17
    • 1970-01-01
    • 2021-10-13
    相关资源
    最近更新 更多