首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于访问特定子值的Firebase规则

用于访问特定子值的Firebase规则
EN

Stack Overflow用户
提问于 2016-12-14 07:47:12
回答 1查看 1.1K关注 0票数 1

如果要在节点中保存相同类型的多个子节点,则childByAutoId将非常有用,这样每个子节点都将有自己的唯一标识符。

代码语言:javascript
复制
List:{
KJHBJJHB:{
  name:List-1,
  owner:John Doe,
  user_id:<Fire base generated User_id>
},
KhBHJBJjJ:{
  name:List-2,
  owner:Jane Lannister,
  user_id:<Fire base generated User_id>
},
KhBHJZJjZ:{
  name:List-3,
  owner:John Doe,
  user_id:<Fire base generated User_id>
}
}

我试图在以下代码的帮助下访问List

代码语言:javascript
复制
let ref = FIRDatabase.database().reference(withPath: "/List")

当前登录应用程序的用户是John Doe。当用户访问列表时,我希望所有所有者为John DoeList子(即List-1 & List-3)忽略其他子值。

我是否必须在我的应用程序中这样做,还是可以通过Firebase安全规则来实现?

我目前的规则定义是:

代码语言:javascript
复制
"List":{
 ".read": "root.child('List/'+root.child('List').val()+'/user_id').val() === auth.uid" }

但这条规则并没有给我任何成功。知道怎样才能达到预期的效果吗?

EN

回答 1

Stack Overflow用户

发布于 2016-12-14 15:46:40

您正在尝试使用安全规则来筛选列表。这是不可能的,对于从SQL背景进入Firebase的开发人员来说,这是常见的缺陷之一。我们通常将其称为“规则不是过滤器”,您可以在以下网站了解更多有关它的信息:

解决方案几乎总是一样的:保留每个用户都可以访问的帖子键的单独列表。

代码语言:javascript
复制
UserLists:{
  JohnUid: {
    KJHBJJHB: true,
    KhBHJZJjZ: true
  },
  JaneUid: {
    KhBHJBJjJ: true
  }
}

这种类型的列表通常被称为索引,因为它包含对实际post的引用。您还可以在关于数据结构的Firebase文档中找到有关此结构的更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41137284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档