You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 19:12:50