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

SVA*_*ERG 7 javascript firebase reactjs 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);
        });
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我想将用户Firbase Auth uid存储到请求中,以便我稍后可以在我的应用程序中查询用户的请求.

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

Dan*_*ein 4

给出这个答案是为了避免人们必须阅读评论对话。

最佳途径是创建一个名为 的集合users,其中文档 ID 是uid来自 的用户Authentication。最简单的事情是在新注册时执行此操作,您可以在处理新用户注册时执行此操作,或者您可以查看云功能,它会查找新的身份验证并运行如下功能:

exports.sendWelcomeEmail = functions.auth.user().onCreate((user) => {
  // ...
});
Run Code Online (Sandbox Code Playgroud)

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

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