如何在Firestore文档中保存对Firebase Auth用户的引用?

时间:2018-02-27 10:15:29

标签: javascript reactjs firebase google-cloud-firestore

所以我有一个应用程序,您可以注册和登录。我使用Firebase Auth。

然后我有一个Firestore,我有多个集合,如“请求”和“优惠”。我的应用中的Firebase-Authed用户可以创建新的请求,我这样添加:

    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作为键添加文档,然后在“请求”集合中保存对用户的引用。但在目前的情况下,我不能或至少我找不到方法,阅读文档和搜索谷歌。

1 个答案:

答案 0 :(得分:2)

为此提供一个答案,以避免人们不得不阅读评论会话。

最佳方法是创建一个名为users的集合,其中文档ID是uid中用户的Authentication。最简单的方法是在新注册时执行此操作,您可以在处理新用户注册的位置执行此操作,也可以查看Cloud Functions来查找新的身份验证并按以下方式运行该功能:

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

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

无论有没有用户集合,只要您始终有一种检索用户信息的方式,就可以像存储样本一样存储UID。创建users集合可以使为用户存储的数据类型的操作更加灵活(由于充分的理由,标准auth对象的灵活性为零)。