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

如何修改代码实现更新当前用户而非创建新用户?

解决Firebase数据库更新当前用户信息的问题

嘿,我来帮你调整这段代码,让它能正确更新当前用户的信息而不是创建新用户。先看看原代码里的问题:你现在的数据库引用指向的是Threads Users/Threads Users这个固定路径,每次调用setValue()都会往这个路径写数据,相当于覆盖或者创建这个节点,而不是定位到当前用户的专属记录。

核心思路

要更新当前用户的信息,关键是找到当前用户在数据库中的唯一节点,Firebase通常用用户的UID(从Firebase Auth获取)作为这个节点的键,这样每个用户都有自己独立的数据路径。

修改后的代码示例

// 初始化数据库引用(规范变量名,符合Java命名习惯)
FirebaseDatabase userDatabase = FirebaseDatabase.getInstance();
DatabaseReference userDatabaseRef = userDatabase.getReference().child("Threads Users");

// 获取当前登录用户的UID(必须确保用户已登录,否则getCurrentUser()会返回null)
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
if (currentUser != null) {
    String currentUserUid = currentUser.getUid();
    // 定位到当前用户的专属数据节点
    DatabaseReference currentUserRef = userDatabaseRef.child(currentUserUid);

    // 准备要更新的用户数据
    Map<String, String> userData = new HashMap<>();
    userData.put("userfirstname", Fname);
    userData.put("userlastname", Sname);
    userData.put("userdateofbirth", DOB);
    userData.put("useraddress", Add);
    userData.put("userpostcode", Ptd);
    userData.put("usercardnumber", Cnumber);
    userData.put("usercardexpirydate", Cdate);
    userData.put("userccvnumber", CCV); // 注意原代码这里多了个空格,建议去掉

    // 全量更新用户节点(会覆盖该节点下的所有现有数据)
    currentUserRef.setValue(userData)
            .addOnSuccessListener(aVoid -> {
                // 更新成功后的操作
                Log.d("UserUpdate", "用户信息更新成功");
            })
            .addOnFailureListener(e -> {
                // 更新失败的处理
                Log.e("UserUpdate", "用户信息更新失败", e);
            });
} else {
    // 用户未登录的处理逻辑
    Log.w("UserUpdate", "用户未登录,无法更新信息");
}

额外说明

  • 如果只需要更新部分字段(比如只改姓名和地址),推荐用updateChildren()替代setValue(),这样不会覆盖其他未修改的字段:
    currentUserRef.updateChildren(userData)
            .addOnSuccessListener(...)
            .addOnFailureListener(...);
    
  • 务必确保用户已经通过Firebase Auth登录,否则getCurrentUser()会返回null,导致无法获取UID。如果你的场景需要处理未登录状态,可以在这里添加引导用户登录的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:05:39