【问题标题】:how to get authenticated user data in firestore android如何在firestore android中获取经过身份验证的用户数据
【发布时间】:2021-08-18 01:08:50
【问题描述】:

我有一个 Firestore 数据库,请参见下图。我想检索医生的信息。 “医生”集合下的所有这些文档都来自经过身份验证的用户,我已经用他们的 ID 保存了这些文档。 我正在使用此代码获取文档,但它返回 0。我认为问题在于身份验证。请帮我解决这个问题。

 val query = fireStoreDbRef.collection(Constants.COLLECTION_DOCTORS)
        query.get().addOnSuccessListener {
        Log.d("TAG", "getAllDoctors: "+it.size())
    }

我正在使用的安全规则

【问题讨论】:

  • 我不认为这里的问题是身份验证,因为您注释掉了允许所有人访问的身份验证规则。您可以检查的几件事是 Constants.COLLECTION_DOCTORS 的值是否是您期望的值,而不是在 sucessListener 中使用 it 运算符,而是按照 documentation 中的描述进行操作并使用 documents 结果。你可以试试吗?
  • @RafaelLemos 感谢您的回复。我已经相应地尝试了一切都很好,但没有给我任何回报。 \n fireStoreDbRef.collection("doctors").get().addOnSuccessListener { 文档 -> for (文档中的文档) { Log.d("TAG", "${document.id} => ${document.data} ") } } .addOnFailureListener { exception -> Log.d("TAG", "Error getting documents: ", exception) }
  • 我刚刚发现你的控制台中的documentIds是斜体的,这不是正常的显示,说明这些文件已经被删除了。尝试向该集合添加一个新文档并尝试查询它,到那时它应该可以工作了。
  • @RafaelLemos 谢谢你,你是对的,因为斜体文档我已经手动添加了一个文档到集合中并且它正在工作。但是现在我想知道为什么这些文件变成斜体,因为它们没有被删除并且里面有数据。
  • 我找到了为什么文档是斜体以及如何处理它们的答案。很有帮助stackoverflow.com/questions/48137582/…

标签: kotlin google-cloud-firestore firebase-security


【解决方案1】:

您可以在屏幕截图中看到documentIds斜体,这表明您尝试访问的文档已被删除。如果您要添加一个新文档,那么您当前用于获取文档的代码应该可以正常工作。

根据这些文档被删除的原因,最有可能的是它们被其他操作此 Firestore 的人删除,不幸的是,Firestore 没有本地日志解决方案供您审核。事实上,建议您使用 Cloud Functions 为您的 Firestore 构建一个日志记录解决方案,如果您觉得有必要,请在社区回答中here is an example 了解如何做到这一点。

如果不是这种情况,我建议您密切注意这种行为,如果它再次发生,我建议您在 Google's Issue Tracker 上打开错误报告,以便 Google 的工程部门解决此问题团队

【讨论】:

  • 您的回答确实帮助我解决了问题,非常感谢。请支持该问题,以便对其他人有所帮助。
  • 在这种情况下,还请考虑接受并支持此答案,因为它为您提供了解决您所面临问题的解决方案,并且可能对其他人有所帮助。
猜你喜欢
  • 2017-11-29
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
  • 2018-11-26
相关资源
最近更新 更多