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

如何在Firebase Realtime Database中查询指定属性子节点及员工账号数据

Firebase Realtime Database 获取子节点指定属性的方法

你的数据库结构如下图所示:
Firebase数据库结构

当然可以实现该需求,你可以通过遍历员工父节点下的所有子节点,按需提取username和password两个属性即可,不需要拉取节点下的全部冗余字段。

常用端实现示例

Web/JavaScript 端

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

const db = getDatabase();
// 指向员工根节点
const employeesRef = ref(db, 'employees/');

get(employeesRef).then((snapshot) => {
  if (snapshot.exists()) {
    const userList = [];
    // 遍历所有员工子节点
    snapshot.forEach((empSnapshot) => {
      // 仅提取需要的两个属性
      const userInfo = {
        username: empSnapshot.child('username').val(),
        password: empSnapshot.child('password').val()
      }
      userList.push(userInfo);
    });
    // 此处可自行处理拿到的用户账号密码数组
    console.log(userList);
  } else {
    console.log("无员工数据");
  }
}).catch((err) => {
  console.error("查询失败:", err);
});

Android Java 端

DatabaseReference empRef = FirebaseDatabase.getInstance().getReference("employees");
empRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        List<Map<String, String>> credentialList = new ArrayList<>();
        for (DataSnapshot empSnap : snapshot.getChildren()) {
            String uname = empSnap.child("username").getValue(String.class);
            String pwd = empSnap.child("password").getValue(String.class);
            Map<String, String> item = new HashMap<>();
            item.put("username", uname);
            item.put("password", pwd);
            credentialList.add(item);
        }
        // 处理获取到的账号密码数据
    }

    @Override
    public void onCancelled(DatabaseError error) {
        Log.e("查询错误", error.getMessage());
    }
});

重要提示:明文存储用户密码属于高风险操作,生产环境一定要对密码进行加盐哈希处理后再存入数据库,避免数据泄露造成用户资产损失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:45:03