【问题标题】:How to save references to Firebase Auth Users in a Firestore document?如何在 Firestore 文档中保存对 Firebase 身份验证用户的引用?
【发布时间】:2018-08-06 22:52:31
【问题描述】:

所以我有一个应用程序,您可以在其中注册和登录。我使用 Firebase Auth 做到了这一点。

然后我有一个 Firestore,其中有多个集合,例如“Requests”和“Offers”。我的应用程序中的 Firebase 授权用户可以创建新请求,我添加如下:

    firestore
        .collection('requests')
        .add({
            category: 'Test',
            customer_id: this.props.appState.user.uid, // The uid from Firebase Auth
            link: this.state.productLink
        })
        .then(docRef => {
            console.log('Successfully saved!');
        })
        .catch(error => {
            console.log(error);
        });

如您所见,我想将用户 Firbase Auth uid 存储到请求中,以便稍后在我的应用中查询用户的请求。

问题是:这是正确的方法吗?此时我不想在我的 Firestore 中创建用户集合来为用户保存更多数据。在这种情况下,我可以添加一个以 uid 作为键的文档,然后在“请求”集合中保存对用户的引用。但在目前的情况下,我不能或至少我还没有找到方法,阅读文档并搜索谷歌。

【问题讨论】:

  • 请问您为什么不想创建用户集合?您能否澄清“但在当前情况下我不能或至少我还没有找到方法,阅读文档并搜索谷歌”是什么意思。您无法弄清楚如何为用户创建参考?你可以创建 userRef = firebase.firestore().collection("users").doc(uid)
  • 在这一点上,用户收集对我来说并没有什么意义,因为我没有任何进一步的数据要为用户存储。他们没有“个人资料”或其他东西。对于引用的那句话,我的意思是我不知道应该如何将“引用”存储到 Firebase-Auth-uid。我问自己我发布的代码在这种情况下是否正确,因为我只将 uid 作为字符串存储到字段“customer_id”中。
  • 只要您只需要基于登录用户(即 currentUser)进行查询,这对我来说似乎是个好方法!但是,我会让专家们插嘴。
  • 基于 Firebase Auth 文档,我不这么认为。如果要检索有关每个用户的信息,或存储每个用户的任何其他信息,则需要使用数据库。
  • 您可以在 admin sdk 的 auth() 方法上搜索用户,但您需要 uid 才能这样做。换句话说,您应该考虑在搜索当前登录用户以外的用户的任何设计中存储用户表。

标签: javascript reactjs firebase google-cloud-firestore


【解决方案1】:

给出这个答案以避免人们不得不通读 cmets 对话。

最佳途径是创建一个名为users 的集合,其中文档ID 是来自Authentication 的用户的uid。最简单的方法是在新注册时执行此操作,您可以在处理新用户注册时执行此操作,或者您可以查看 Cloud Functions,它会寻找新的身份验证并像这样运行函数:

exports.sendWelcomeEmail = functions.auth.user().onCreate((user) => {
  // ...
});

此处的文档:https://firebase.google.com/docs/functions/auth-events

无论有没有用户集合,只要您始终有办法检索用户信息,就可以像在示例中一样存储 UID。创建 users 集合可以更加灵活地操作您为用户存储的数据类型(因为标准身份验证对象的灵活性为零,这是有充分理由的)。

【讨论】:

  • 但正如@SVARTBERG 上面所问的那样,他不需要任何其他字段。他只有电子邮件和密码。我有同样的要求。我只想显示创建特定文档的用户的电子邮件。这会简化吗?打开以了解更多信息。
猜你喜欢
  • 2018-03-19
  • 2021-06-23
  • 1970-01-01
  • 2018-01-11
  • 2021-06-11
  • 1970-01-01
  • 2021-06-29
  • 2021-05-29
  • 2019-02-17
相关资源
最近更新 更多