Firebase - 使用' Node-Id'检索节点

时间:2016-05-25 21:06:24

标签: ios swift firebase firebase-realtime-database

我在理解如何在检索完整节点时使用的位置时遇到困难。如果我有这样的结构:

- users
   -user_id1
      - key1:value1
      - key2:value2
   -user_id2
      - key1:value3
      - key2:value4
  ...

如果我知道" user_id1",我怎样才能得到整个节点;所以我可以使用snapshot.key获取user_id,并使用snapshot.value获取[key:value]

   -user_id1
      - key1:value1
      - key2:value2

这是我到目前为止所尝试的......

let key = "user_id1"   // static for test

let usersRef = Firebase(url: secret + "/users")
usersRef.queryEqualToValue(key).observeSingleEventOfType(.Value, withBlock: { snapshot in

       print(snapshot)

//     print(snapshot.key)   // id
//     print(snapshot.value) // [key:value]                  
})

这是回归:

  

Snap (users) <null>

     

Snap (users) <null>

2 个答案:

答案 0 :(得分:3)

这比你正在尝试的要简单得多:

ref.child("users").child("user_id1").observeSingleEventOfType(.Value, withBlock: { snapshot in
    print(item.key)
    print(item.value)
})

这不仅更简单,而且数据库也更便宜,因为它不必执行(可能很昂贵的)查询。

有关示例,请参阅documentation on reading child value with Swift

的此部分

答案 1 :(得分:1)

尝试添加queryOrderedByKey()

例如

let ref = root.child("users")

ref.queryOrderedByKey().queryEqualToValue("user_id1").observeSingleEventOfType(.Value, withBlock: { snapshot in

    // could get many items in snapshot hence the loop

    for item in snapshot.children {
        print(item)
    }

})