在不知道父级的情况下获取firebase密钥和值的值

时间:2017-03-24 14:11:20

标签: swift firebase firebase-realtime-database

我设置了以下数据库:

NodesArray : array [1..100] of TNode;

我正在尝试仅在当前用户uid位于该特定Groupname的Members区域时才查询以获取Groupname和cost。问题是我不知道组名,因为它们都将由用户选择,因此它不是静态的。是否有任何类型的getParent函数与firebase数据库?

2 个答案:

答案 0 :(得分:1)

如果 Members 节点已有FIRDataSnapshot个对象,则可以使用ref(和FIRDatabaseReference.parent)属性向上移动层次结构。例如:

let members: FIRDataSnapshot = ...
let groupName: FIRDatabaseReference = members.ref.parent!
// Inspect the groupName ref...

但是,正如我之前所说,你需要一个FIRDataSnapshot方便的工作: - )

答案 1 :(得分:0)

你必须遵守安全规则: -

安全规则

{
"rules": {
    "Groups" : {

     "$Group_name" :{

        // Will only allow the user's who are members to this group access
        // this group node to read; you can modify your write rules similarly...

       ".read" : "root.child('Groups').child($Group_name).child('MemberID').child(auth.uid).exists()",
      ".write" : "auth != null"

       }
    },

  "Users" : {

    "$uid" : {

         ".read" : "auth.uid == $uid",
         ".write" : "auth.uid == $uid"

      }
    }
  }
}

安全规则充当内部过滤器;因此,您不必担心父节点将不允许用户进入该特定 $ Group_name 节点,除非该节点是该组的成员。