【发布时间】:2026-02-13 15:25:01
【问题描述】:
我正在尝试构建一个基于个人资料的应用程序,其中用户信息存储在一个单独的集合中,其中 userID 作为 documentID
UserInfo/userID
用户 ID 存储在另一个集合中
Users/ramdomDocID
这里的每个文档都包含一个用户的uuid、userID等字段,没有重复具有相同uuid的文档 或 用户 ID
身份验证成功后,我从 FirebaseUser 获取 uuid,然后查询 Users 集合中的 uuid 并然后从结果中读取 userID,如果查询返回 0 个文档,那么我创建一个新的配置文件并在两个集合中添加相关数据。
问题是 Firestore 查询有时会失败并返回 0 个文档,现在它返回 0 并且我创建新用户,并且现在忽略旧用户信息在数据库上创建重复项。
这是我的代码,我做错了吗?
usersCollectionRef.whereEqualTo("uuid", uuid).get()
.addOnCompleteListener { result ->
if (result.isSuccessful && !result.result?.isEmpty!!) {
for (document in result.result?.documents!!) {
getUserListener.onCompleteListener(document.toObject<UserModel>())
}
} else {
getUserListener.onCompleteListener(null)
}
}
.addOnFailureListener { exception ->
getUserListener.onFailureListener(exception.message)
}
更新:我还禁用了 Firestore 持久性
val firestore = Firebase.firestore
val settings = firestoreSettings {
isPersistenceEnabled = false
}
firestore.firestoreSettings = settings
Firestore 是否有可能导致查询失败,尽管在我的情况下它发生 100 次中有 5 次
任何建议将不胜感激
【问题讨论】:
-
这里不涉及概率。该操作要么有效,要么无效。回调会告诉你发生了什么。如果你不等待结果,还不确定结果会是什么。
标签: android firebase kotlin google-cloud-firestore