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

