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

Android Firebase:如何从Firebase数据库数据树中仅获取name数据

提取Firebase数据库中name字段的方法

嘿,我来帮你搞定从Firebase数据库里提取name数据的事儿!首先先拿最常见的Firebase Realtime Database数据结构举例子(如果和你的实际结构有出入,调整路径就行):

{
  "users": {
    "user123": {
      "name": "Alice",
      "email": "alice@example.com"
    },
    "user456": {
      "name": "Bob",
      "email": "bob@example.com"
    }
  }
}

下面分不同平台给你具体的实现方法:

1. Web端(JavaScript SDK)

提取单个用户的name

如果你知道目标用户的UID(比如user123),可以直接定位到该节点读取:

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

const db = getDatabase();
const userRef = ref(db, 'users/user123');

get(userRef).then((snapshot) => {
  if (snapshot.exists()) {
    const userName = snapshot.val().name;
    console.log('用户名称:', userName); // 输出 Alice
  } else {
    console.log('该用户不存在');
  }
}).catch((error) => {
  console.error('读取数据出错:', error);
});

提取所有用户的name列表

如果要把所有用户的name都收集起来,遍历快照即可:

const usersRef = ref(db, 'users');

get(usersRef).then((snapshot) => {
  if (snapshot.exists()) {
    const userNameList = [];
    snapshot.forEach((childSnapshot) => {
      const userName = childSnapshot.val().name;
      userNameList.push(userName);
    });
    console.log('所有用户名称:', userNameList); // 输出 ["Alice", "Bob"]
  } else {
    console.log('没有用户数据');
  }
}).catch((error) => {
  console.error('读取数据出错:', error);
});

2. Android端(Kotlin)

假设你已经完成了Firebase的初始化配置:

单个用户的name

val db = FirebaseDatabase.getInstance()
val userRef = db.getReference("users/user123")

userRef.get().addOnSuccessListener { snapshot ->
    if (snapshot.exists()) {
        val userName = snapshot.child("name").value.toString()
        Log.d("Firebase", "用户名称: $userName")
    } else {
        Log.d("Firebase", "用户不存在")
    }
}.addOnFailureListener { error ->
    Log.e("Firebase", "读取失败", error)
}

所有用户的name列表

val usersRef = db.getReference("users")

usersRef.get().addOnSuccessListener { snapshot ->
    val userNameList = mutableListOf<String>()
    snapshot.children.forEach { childSnapshot ->
        val userName = childSnapshot.child("name").value.toString()
        userNameList.add(userName)
    }
    Log.d("Firebase", "所有用户名称: $userNameList")
}.addOnFailureListener { error ->
    Log.e("Firebase", "读取失败", error)
}

3. iOS端(Swift)

使用Firebase Realtime Database的Swift SDK:

单个用户的name

import FirebaseDatabase

let db = Database.database().reference()
let userRef = db.child("users").child("user123")

userRef.observeSingleEvent(of: .value) { snapshot in
    guard let userData = snapshot.value as? [String: Any],
          let userName = userData["name"] as? String else {
        print("用户不存在或无name字段")
        return
    }
    print("用户名称: \(userName)")
} withCancel: { error in
    print("读取出错: \(error.localizedDescription)")
}

所有用户的name列表

let usersRef = db.child("users")

usersRef.observeSingleEvent(of: .value) { snapshot in
    var userNameList = [String]()
    for child in snapshot.children {
        guard let childSnapshot = child as? DataSnapshot,
              let userData = childSnapshot.value as? [String: Any],
              let userName = userData["name"] as? String else {
            continue
        }
        userNameList.append(userName)
    }
    print("所有用户名称: \(userNameList)")
} withCancel: { error in
    print("读取出错: \(error.localizedDescription)")
}

关键小提示

  • 开发阶段可以暂时把数据库规则设为{ "rules": { ".read": true, ".write": true } }方便调试,但上线前一定要改成严格的权限控制,避免数据泄露
  • 如果你的数据结构不是users下的用户节点,只需要调整ref或child里的路径就行,比如要读posts/post1/author/name,直接定位到对应路径读取name字段即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:02:34