Firebase中共享数据的实时值监听器

时间:2016-09-21 08:39:56

标签: firebase firebase-realtime-database share

最初,我有以下设置:

folder:{
 uid1:{
  f1:{}
  f2:{}
 }
}

我可以通过以下方式听取该uid的价值:

ref('/folder/uid').on('value', functon ....

安全规则可以是这样的:

"folders": {
  "$uid": {
    ".read": "auth != null && auth.uid == $uid",
    ".write": "auth != null && auth.uid == $uid"
  }
},

但现在我必须文件夹共享并计划执行以下操作:

user:{
 uid1:{
  folderAccessRight:{
  read: {fid1:true}
  write: {fid1:true}
  }
 }
}

folder:{
 fid1:{}
 fid2:{}
}

可以设置安全规则以检查用户的folderAccessRight JSON上是否存在$ fid。但是,由于安全规则不能是过滤器,我无法再听顶级文件夹引用(' /文件夹')。

如果我在不同文件夹上添加单独的值侦听器而用户有N个文件夹,我需要 N个侦听器

问题:

  • 多个听众会不会影响效果?
  • 有没有更好的方法来整理数据&实时监听数据?

1 个答案:

答案 0 :(得分:0)

使用您当前的数据结构,您可以安全访问这些文件夹。现在,每个用户只能访问他们拥有的文件夹或他们已被授予访问权限的文件夹。

问题似乎是您无法列出用户有权访问的文件夹。

与使用Firebase(以及大多数其他NoSQL存储系统)一样,解决方案是将您需要的数据添加到模型中。在您的情况下,这意味着您为每个用户添加文件夹列表: