VB.Net中如何从Firebase获取多条数据?附单条获取示例代码
如何从Firebase获取多条员工数据
看起来你已经搞定了单条数据的获取,要拿到多条数据其实很简单,核心就是把响应转换成集合类型(比如列表或字典),而不是单个对象。下面给你具体的调整方案:
问题分析
你当前的代码里,response.ResultAs(Of Employee_No_Fingerprint)()是把Firebase返回的JSON转换成单个Employee_No_Fingerprint对象。但如果你的Employee_No_Fingerprint节点下存储的是多条员工数据(Firebase实时数据库通常会用自动生成的唯一ID作为每条数据的键),就需要用集合来接收这些数据。
修改后的代码
方案1:用List存储多条数据(适合不需要保留Firebase键的场景)
Friend Class Employee_No_Fingerprint ' 注意:如果Firebase字段名和类属性名大小写/格式不匹配,需要加JsonPropertyName标记 ' 比如Firebase用驼峰,这里用下划线的话,添加如下标记: '<JsonPropertyName("code")> Public Property code As Integer '<JsonPropertyName("last_name")> Public Property last_name As String Public Property first_name As String Public Property middle_name As String Public Property suffix As String Public Property department_name As String Public Property picture As String Public Property fingerprint As String Public Property upload As Integer End Class Private Sub GetAllEmployee() ' 初始化一个列表来存储所有员工数据 Dim employeeList As New List(Of Employee_No_Fingerprint)() ' 获取Firebase节点下的所有数据 Dim response As FirebaseResponse = clientFingerprint.Get("Employee_No_Fingerprint") ' 将响应结果转换成List类型 employeeList = response.ResultAs(Of List(Of Employee_No_Fingerprint))() ' 遍历列表处理每条数据 For Each emp In employeeList ' 这里可以根据需求处理单个员工,比如打印信息、存入本地数据源等 Debug.WriteLine($"员工姓名:{emp.last_name} {emp.first_name},部门:{emp.department_name}") Next End Sub
方案2:用Dictionary存储(适合需要保留Firebase自动生成的唯一键的场景)
如果你的Firebase数据结构是这样的:
"Employee_No_Fingerprint": { "emp123": { "code": 1, "last_name": "Smith", ... }, "emp456": { "code": 2, "last_name": "Johnson", ... } }
这种情况下,用Dictionary(Of String, Employee_No_Fingerprint)可以同时拿到Firebase的键(比如emp123)和对应的员工数据:
Private Sub GetAllEmployeeWithKeys() Dim employeeDict As New Dictionary(Of String, Employee_No_Fingerprint)() Dim response As FirebaseResponse = clientFingerprint.Get("Employee_No_Fingerprint") employeeDict = response.ResultAs(Of Dictionary(Of String, Employee_No_Fingerprint))() ' 遍历字典,同时获取键和员工对象 For Each kvp In employeeDict Dim firebaseKey As String = kvp.Key ' Firebase生成的唯一ID Dim emp As Employee_No_Fingerprint = kvp.Value Debug.WriteLine($"员工ID:{firebaseKey},姓名:{emp.last_name} {emp.first_name}") Next End Sub
注意事项
- 确保Firebase的
Employee_No_Fingerprint节点下确实存在多条数据,而不是单个对象。如果数据库里只有一条数据,那转换成集合也只会有一个元素。 - 如果遇到序列化失败的问题,检查类属性名和Firebase字段名是否完全匹配(包括大小写)。如果不匹配,给属性添加
JsonPropertyName特性来指定映射的字段名(需要引用System.Text.Json命名空间)。
内容的提问来源于stack exchange,提问作者Olive
相关产品推荐
相关产品推荐

