【问题标题】:Is my User ID supposed to be different than my Document ID for each User in my Users Collection (Firestore)?我的用户 ID 是否应该不同于我的用户集合(Firestore)中每个用户的文档 ID?
【发布时间】:2020-07-09 07:08:30
【问题描述】:

我知道这可能是一个愚蠢的问题,但我才刚刚开始学习 Firebase/Firestore,我无法找到我正在寻找的答案。

我知道我可以从 currentUser 方法中获取用户 ID,但是如果每个用户的 uid 和文档 ID 是不同的值,我应该如何在我的文件路径中引用 uid?

例如,在下面的引用变量中,“HEo4YjfjJ0p2B6hVJRXs”是文档 id。如果我将此值替换为当前用户的 uid,尽管 uid 值不同,它仍然可以正常工作吗?

var colRef = Firestore.firestore().collection("/users/HEo4YjfjJ0p2B6hVJRXs/Days")

【问题讨论】:

  • 我不明白问题出在哪里。如果您想知道某些东西是否有效,请尝试一下。通常,当某些代码无法按预期方式运行时,人们会发布到 Stack Overflow。然后问题包含详细信息。
  • 不要将 documentID 与 userID (uid) 混淆。 Firestore 中的每个文档都有一个 documentID - 您可以让 Firestore 动态创建它,也可以手动分配它。通常,如果您有一个 /users 集合,则该集合中的文档将手动创建其 documentID,并且您将使用用户 uid 作为 documentID。这使得数据可以快速检索,因为当用户进行身份验证时,您可以获取他们的 uid,然后直接在 /users 集合中访问他们的文档而无需查询。 /users/uid_0/users/uid_1

标签: ios swift firebase google-cloud-firestore firebase-authentication


【解决方案1】:

例如,在下面的引用变量中,“HEo4YjfjJ0p2B6hVJRXs”是文档ID。

如果这是文档的 id,则应该在参考中使用该 id,就像你已经做的那样。

如果我将此值替换为当前用户的 uid,尽管 uid 值不同,它是否仍然可以正常工作?

如果当前用户的uid 与文档的ID 不同,那么您将无法读取该文档。如果您需要一个具有 id 作为用户的uid 的文档,那么您应该创建该文档。如果您还在考虑通配符,请注意在 Firestore 中没有通配符路径指向文档。您必须通过 id 来识别集合和文档。

【讨论】:

  • @RapsIn4 这是一个很好的答案,所以请接受。一个澄清那么您将无法阅读该文档是正确的,因为您将无法使用getDocument阅读该文档,但是,它可以通过在用户集合中查询与用户 uid 匹配的字段来检索。这不是 /users 集合的最佳实践,但如果您想知道,例如,用户属于哪些组 - 查询 /groups,它会很有用与用户 uid 匹配的字段的集合。这里的提示是始终通过用户的 uid 而不是 documentID 来引用用户。
  • @Jay 感谢您,Jay,对这个话题发表评论并深入探讨。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-20
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
  • 2021-11-13
相关资源
最近更新 更多