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

如何在Kotlin中通过ID从Firebase Realtime Database获取数据?

从Firebase Realtime Database获取完整User对象的方法

从你的数据库结构来看,users节点下以用户ID作为子节点键,每个子节点都存储着对应用户的完整信息对象。下面给你不同开发平台的具体实现代码:

Android(Kotlin)

1. 获取单个指定用户对象

import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.FirebaseDatabase

// 初始化数据库引用
val dbRef: DatabaseReference = FirebaseDatabase.getInstance().getReference("users")

// 替换成你要获取的目标用户ID
val targetUserId = "your-target-user-id"

// 读取单个用户数据
dbRef.child(targetUserId).get().addOnSuccessListener { snapshot ->
    if (snapshot.exists()) {
        // 把快照转成User实体类对象
        val user = snapshot.getValue(User::class.java)
        // 拿到User对象后做后续处理
        user?.let {
            println("用户名:${it.username},邮箱:${it.email}")
        }
    } else {
        println("找不到该用户")
    }
}.addOnFailureListener {
    println("读取数据失败:${it.message}")
}

*注意:得先定义User数据类,字段要和数据库里用户节点的字段对应,示例如下:

data class User(
    val username: String? = null,
    val email: String? = null,
    // 其他你需要的字段
)

2. 获取所有用户对象列表

dbRef.get().addOnSuccessListener { snapshot ->
    val userList = mutableListOf<User>()
    for (userSnapshot in snapshot.children) {
        val user = userSnapshot.getValue(User::class.java)
        user?.let { userList.add(it) }
    }
    // userList就是所有用户的对象列表
    println("一共获取到${userList.size}个用户")
}.addOnFailureListener {
    println("读取数据失败:${it.message}")
}

Web(JavaScript)

1. 获取单个指定用户对象

import { getDatabase, ref, get } from "firebase/database";

// 初始化数据库引用
const db = getDatabase();
const usersRef = ref(db, 'users');

// 替换成你要获取的目标用户ID
const targetUserId = "your-target-user-id";

// 读取单个用户数据
get(ref(db, `users/${targetUserId}`)).then((snapshot) => {
  if (snapshot.exists()) {
    const user = snapshot.val();
    // 处理拿到的User对象
    console.log("用户名:", user.username, "邮箱:", user.email);
  } else {
    console.log("找不到该用户");
  }
}).catch((error) => {
  console.error("读取数据失败:", error);
});

2. 获取所有用户对象列表

get(usersRef).then((snapshot) => {
  const userList = [];
  snapshot.forEach((childSnapshot) => {
    const user = childSnapshot.val();
    userList.push(user);
  });
  // userList就是所有用户的对象列表
  console.log("一共获取到", userList.length, "个用户");
}).catch((error) => {
  console.error("读取数据失败:", error);
});

iOS(Swift)

1. 获取单个指定用户对象

import FirebaseDatabase

// 初始化数据库引用
let dbRef = Database.database().reference().child("users")

// 替换成你要获取的目标用户ID
let targetUserId = "your-target-user-id"

// 读取单个用户数据
dbRef.child(targetUserId).observeSingleEvent(of: .value) { snapshot in
    guard let userDict = snapshot.value as? [String: Any] else {
        print("找不到该用户")
        return
    }
    // 把字典转成User模型对象
    let user = User(dictionary: userDict)
    // 处理拿到的User对象
    print("用户名:\(user.username ?? ""),邮箱:\(user.email ?? "")")
} withCancel: { error in
    print("读取数据失败:\(error.localizedDescription)")
}

*注意:得先定义User模型类,示例如下:

class User {
    var username: String?
    var email: String?
    
    init(dictionary: [String: Any]) {
        self.username = dictionary["username"] as? String
        self.email = dictionary["email"] as? String
        // 其他字段的初始化逻辑
    }
}

2. 获取所有用户对象列表

dbRef.observeSingleEvent(of: .value) { snapshot in
    var userList = [User]()
    for child in snapshot.children {
        guard let userSnapshot = child as? DataSnapshot,
              let userDict = userSnapshot.value as? [String: Any] else {
            continue
        }
        let user = User(dictionary: userDict)
        userList.append(user)
    }
    // userList就是所有用户的对象列表
    print("一共获取到\(userList.count)个用户")
} withCancel: { error in
    print("读取数据失败:\(error.localizedDescription)")
}

内容的提问来源于stack exchange,提问作者Yunnane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 17:17:48