首页 > 解决方案 > 从 Firebase 数据库中获取直接后代

问题描述

我最近一直在开发一个应用程序,但偶然发现了另一个问题(这就是程序员的生活,不是吗?)。作为记录,我正在使用最新版本的 Swift、XCode 和 Firebase。我只想获取父母的直系后代(我的参考)。这是我的 JSON 树:

users
  family-name
    user-1      // I want this...
      pass: abc // but not this ...
    user-2      // ... and this
      pass: def // ... but not this
    events      // I skip this specifically in my code
      event-1
        a: a
        b: b
      event-2
        a: a
        b: b
      event-3
        a: a
        b: b

如树中所示,我只想获取 user-1、user-2 和 user-3。

我曾尝试使用普通查询,但它没有工作除了得到我想要的那些,我还得到了孩子的价值。

let query = userRef.queryOrdered(byChild: "users")
query.observe(.value, with: { (snapshot) in
  for child in snapshot.children {
    let value = snapshot.value as? NSDictionary
    for anotherChild in value! {
      if "\(key)" == "events" {
        print("Let's skip that, since it's just the events sub-tree!")
      } else {
        // my work goes here
      }

我收到六个值返回给我,但我希望有两个。我不知道为什么!提前感谢任何可以提供帮助的人。

标签: swiftfirebasefirebase-realtime-database

解决方案


实时数据库查询是“深度”的,因为对节点的请求总是重试该节点下的所有子节点。使用客户端库时没有“浅层”查询,也无法从节点中排除子节点。如果您想要特定的孩子,而不是他们的兄弟姐妹,您将不得不单独请求他们。


推荐阅读