swift firebase检索对象的子节点具有相同键的所有对象

时间:2016-07-04 02:13:07

标签: swift firebase firebase-realtime-database

下面是我的firebase和代码,我想检索User中有User键的所有活动。 ss

let ref = FIRDatabase.database().reference().child("activities/")
ref.queryOrderedByChild("User").queryEqualToValue("John").observeSingleEventOfType(.Value,
        withBlock:{
            (snapshot) in

            for record in snapshot.children
            {

            }
       })

1 个答案:

答案 0 :(得分:0)

这不起作用,因为在您的查询中,当User的实际值是这样的对象时,您尝试执行具有属性User == "John"的所有活动:

{ 
  "John": {
    "age": 21
  }
}

要解决此问题,您应更改数据结构,创建保存所有用户的节点,并仅在users/userID/activities中保留活动的ID。例如,这将是构建数据的更好方法:

{
    "activities": {
        "cycling": {
            "users": {
                "user1": true,
                "user2": true
            }
        },
        "running": {
            "users": {
                "user1": true
            }
        }
    },
    "users": {
        "user1": {
            "name": "John",
            "age": 21,
            "activities": {
                "cycling": true,
                "running": true,
            }
        },
        "user2": {
            "name": "Tim",
            "age": 20,
            "activities": {
                "cycling": true
            }
        }
    }
}

然后你可以使用 如果这有帮助,请告诉我;)