如何修正Firebase Firestore手机号存在判断始终显示存在的问题
问题修复:Firebase Firestore手机号存在判断错误
你的代码逻辑有误,task.isSuccessful仅代表查询请求本身执行成功(没有网络或权限等错误),和是否查到匹配数据无关。所以无论手机号是否存在,只要请求没失败,都会触发“客户已存在”的提示。
修复后的代码如下:
bbdd.collection("Taxi").whereEqualTo("number", number).get().addOnCompleteListener { task -> if (task.isSuccessful) { // 判断查询结果是否包含匹配的文档 if (!task.result.isEmpty) { Toast.makeText(applicationContext, "客户已存在", Toast.LENGTH_LONG).show() } else { Toast.makeText(applicationContext, "客户不存在", Toast.LENGTH_LONG).show() } } else { // 请求失败时提示错误,而非直接判断客户不存在 Toast.makeText(applicationContext, "查询失败:${task.exception?.message}", Toast.LENGTH_LONG).show() } }
关键说明:
- 当查询请求成功后,通过
task.result.isEmpty判断是否找到匹配的手机号:!task.result.isEmpty:存在匹配文档,提示“客户已存在”task.result.isEmpty:无匹配文档,提示“客户不存在”
- 请求失败分支(
task.isSuccessful为false)改为提示查询错误信息,避免混淆“请求失败”和“客户不存在”两种场景
内容的提问来源于stack exchange,提问作者user21771755
相关产品推荐
相关产品推荐

