如何在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
相关产品推荐
相关产品推荐

