Firebase 以两种不同的方式获取子数据

克里斯托弗·洛维茨

我正在构建一个特定的数据库(下图),我想在标签中显示结果。第一个标签应该显示所有客户的数量 - 这很简单,但第二个标签应该显示所有孩子的客户数量,例如:如果客户 Ben 有一个孩子,而 Tom 有一个孩子 - 标签显示 2(数字孩子的客户)。

在此处输入图片说明

有可能做到这一点吗?

我的代码:

let userID = Auth.auth().currentUser!.uid 
ref.observeSingleEvent(of: .value, with: { snapshot in 
  if let allServices = snapshot.childSnapshot(forPath: "usersDatabase/(userID)/Customers").value { 
    if snapshot.childrenCount == 0 { 
      self.servicesLabel.text = "0" 
    } else { 
      self.servicesLabel.text = (allServices as AnyObject).count.description 
    } 
  } 

这里的关键是,由于 usersDatabase 节点是由 .value 读取的,因此遍历每个子节点并将其视为快照将为您提供计数。

let usersDatabaseRef = Database.database().reference().child("usersDatabase")
usersDatabaseRef.observe(.value, with: { snapshot in
    print("there are \(snapshot.childrenCount) users")
    var totalCustomerCount = 0
    for child in snapshot.children {
        let childSnap = child as! DataSnapshot
        let childrenRef = childSnap.childSnapshot(forPath: "Customers")
        totalCustomerCount += Int(childrenRef.childrenCount)
        print("user \(childSnap.key) has \(childrenRef.childrenCount) customers")
    }
    print("... and there are \(totalCustomerCount) total customers")
})

假设usersDatabase节点有3个用户,会打印如下

there are 3 users
user uid_0 has 2 customers //this is the 7U node
user uid_1 has 1 customers
user uid_2 has 3 customers
... and there are 6 total customers

编辑:添加了代码来计算和显示所有子节点的客户总数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Firebase JSON树中表示两种方式的关系?

来自分类Dev

如何在Firebase JSON树中表示两种方式的关系?

来自分类Dev

如何在Firebase上同时使用这两种功能来侦听数据

来自分类Dev

两种方式-两种不同的结果

来自分类Dev

从两种不同类型的数组获取公共数据

来自分类Dev

与对象的两种方式数据绑定?

来自分类Dev

数据绑定:一种方式与两种方式

来自分类Dev

以两种不同的方式绘制相同的数据,获得不同的结果(点阵xyplot)

来自分类Dev

GRU 相同的配置但以两种不同的方式在 tensorflow 中产生两种不同的输出

来自分类Dev

以两种不同方式显示表单

来自分类Dev

类型类的实例有两种不同的方式

来自分类Dev

定义构造函数的两种不同方式

来自分类Dev

与堆的两种不同实现方式混淆

来自分类Dev

WPF以两种不同的方式显示内容

来自分类Dev

JavaScript中两种不同的函数调用方式

来自分类Dev

启动服务的两种不同方式。为什么?

来自分类Dev

以两种不同方式处理SIGALRM

来自分类Dev

为结构分配内存,有两种不同的方式?

来自分类Dev

以两种不同的方式创建简单的指令

来自分类Dev

SQL - 以两种不同方式关联的查询表

来自分类Dev

使用联合选择时以两种不同的名称获取数据

来自分类Dev

AngularJS:越野车两种方式的数据绑定

来自分类Dev

流星两种方式的数据绑定以进行表单验证

来自分类Dev

AngularJS:越野车两种方式的数据绑定

来自分类Dev

Angular指令两种方式数据绑定失败

来自分类Dev

如何实现两种方式的数据绑定?

来自分类Dev

bs-tooltip限制两种方式的数据绑定

来自分类Dev

Python:两种方式进行重复数据删除

来自分类Dev

使用div的两种方式的数据绑定

Related 相关文章

  1. 1

    如何在Firebase JSON树中表示两种方式的关系?

  2. 2

    如何在Firebase JSON树中表示两种方式的关系?

  3. 3

    如何在Firebase上同时使用这两种功能来侦听数据

  4. 4

    两种方式-两种不同的结果

  5. 5

    从两种不同类型的数组获取公共数据

  6. 6

    与对象的两种方式数据绑定?

  7. 7

    数据绑定:一种方式与两种方式

  8. 8

    以两种不同的方式绘制相同的数据,获得不同的结果(点阵xyplot)

  9. 9

    GRU 相同的配置但以两种不同的方式在 tensorflow 中产生两种不同的输出

  10. 10

    以两种不同方式显示表单

  11. 11

    类型类的实例有两种不同的方式

  12. 12

    定义构造函数的两种不同方式

  13. 13

    与堆的两种不同实现方式混淆

  14. 14

    WPF以两种不同的方式显示内容

  15. 15

    JavaScript中两种不同的函数调用方式

  16. 16

    启动服务的两种不同方式。为什么?

  17. 17

    以两种不同方式处理SIGALRM

  18. 18

    为结构分配内存,有两种不同的方式?

  19. 19

    以两种不同的方式创建简单的指令

  20. 20

    SQL - 以两种不同方式关联的查询表

  21. 21

    使用联合选择时以两种不同的名称获取数据

  22. 22

    AngularJS:越野车两种方式的数据绑定

  23. 23

    流星两种方式的数据绑定以进行表单验证

  24. 24

    AngularJS:越野车两种方式的数据绑定

  25. 25

    Angular指令两种方式数据绑定失败

  26. 26

    如何实现两种方式的数据绑定?

  27. 27

    bs-tooltip限制两种方式的数据绑定

  28. 28

    Python:两种方式进行重复数据删除

  29. 29

    使用div的两种方式的数据绑定

热门标签

归档