如何在自动ID子级中使用queryEqualToValue检索数据。Firebase-iOS

Oni*_*al3 4 firebase swift firebase-realtime-database

作为我的问题。当我尝试使用带有自动ID键的“ queryEqualToValue”时,无法从Firebase检索数据。

self.ref.child(..my child..).queryOrderByChild("name").queryEqualToValue("my name")
Run Code Online (Sandbox Code Playgroud)

在子“名称”上方的自动子ID。

编辑:对于我的json树

  • 学生们
    • (自动ID)
      • 名称
        • 名字
        • 昵称

我的真实数据不喜欢这样,但这只是示例结构。我真的想检查是否等于“名字”。

这是我的代码

let ref = FIRDatabase.database().reference()
ref.child("Students").queryOrderedByChild("name").queryEqualToValue("Jason bourne").observeEventType(.Value, withBlock: { snapshot in 
   print("value : " + snapshot.value)
}
Run Code Online (Sandbox Code Playgroud)

Cal*_*lam 5

给定您的实时数据库如下所示:

{
    "students": {
        1: {
            "name": {
                "first_name": "Nathapong",
                "nick_name": "Oniikal3"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以观察事件类型的学生路径,ChildAdded并按子键对查询进行排序name/first_name。然后,您可以queryEqualToValue用来查找具有特定名字的学生。

let ref = FIRDatabase.database().referenceWithPath('students').queryOrderByChild("name/first_name").queryEqualToValue("Nathapong")

ref.observeSingleEventOfType(.ChildAdded, block: { snapshot in
    print(snapshot)
})
Run Code Online (Sandbox Code Playgroud)