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

Android中如何基于邮箱ID更新Firestore中的其他字段

解决Firestore基于邮箱ID更新手机号失败的问题

排查以下几个常见问题,逐步定位并解决:

  • 检查Firestore安全规则
    默认安全规则可能限制了写操作,开发阶段可以临时设置测试规则(上线前务必修改为严格的权限控制):

    rules_version = '2';
    service cloud.firestore {
      match /databases/{database}/documents {
        match /{document=**} {
          allow read, write: if true;
        }
      }
    }
    

    如果测试规则下能正常更新,说明原规则存在权限限制,后续需根据业务需求配置认证用户的读写权限。

  • 确认目标文档是否存在
    update()方法仅能更新已存在的文档,如果Users集合下没有anilkt87@gmail.com这个ID的文档,操作会失败。可以改用set()方法并开启合并模式,实现"存在则更新、不存在则创建"的效果:

    firebaseFirestore.collection("Users")
                    .document("anilkt87@gmail.com")
                    .set(Map.of("phone", 897389121), SetOptions.merge());
    
  • 校验数据类型是否匹配
    如果Firestore中phone字段定义为字符串类型,传入数字会导致更新失败,改成字符串格式尝试:

    firebaseFirestore.collection("Users")
                    .document("anilkt87@gmail.com")
                    .update("phone", "897389121");
    
  • 添加错误监听获取具体异常信息
    原代码未处理异步操作的错误回调,添加监听后可以直接查看失败原因:

    firebaseFirestore.collection("Users")
                    .document("anilkt87@gmail.com")
                    .update("phone", 897389121)
                    .addOnSuccessListener(aVoid -> {
                        Log.d("Firestore", "手机号更新成功");
                    })
                    .addOnFailureListener(e -> {
                        Log.e("Firestore", "更新失败原因: " + e.getMessage());
                    });
    

    通过Log中的错误信息,能快速定位权限不足、文档不存在、类型不匹配等具体问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:55:28