当前位置: 首页 > 知识库问答 >
问题:

如何在Firestore文档中保存对Firebase身份验证用户的引用?

钱经业
2023-03-14

所以我有一个你可以注册和登录的应用程序。我是用Firebase身份验证的。

然后,我有一个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身份验证uid存储到请求中,以便稍后在应用程序中查询用户的请求。

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

共有1个答案

公冶子琪
2023-03-14

给出一个答案,以避免人们必须通读评论对话。

最佳方法是创建一个名为users的集合,其中文档ID是来自authentication的用户的UID。最简单的方法是在new sign up上执行此操作,您可以在处理新用户注册时执行此操作,也可以查看云函数以查找新的身份验证,并运行如下所示的函数:

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

不管有没有users集合,只要始终有检索用户信息的方法,就可以像示例中那样存储UID。创建users集合使操作为用户存储的数据类型变得更加灵活(因为标准身份验证对象的灵活性为零,这是很有道理的)。

 类似资料:
  • 我有用户收藏,想使用Firebase uid作为文档_id, eg: Firebase Uid= 如果我不使用

  • 我在注册过程中从用户那里得到了一些信息。我希望每个用户名都是唯一的。我称我的方法如下。 其内容如下。 方法无法向我的变量添加真布尔值。我想,addOnCompleteListener在为我的布尔值赋值时并没有结束。 但是,如果用户名控制后可以获得用户名,则用户身份验证成功,但不会写入Firebase。这可能是什么原因?我在等待您的帮助。

  • 于是我在这里看到:https://firebase . Google . com/docs/auth/web/account-linking # link-auth-provider-credentials-to-a-user-account现在可以在Firebase中链接用户账号了。我还看到Firebase提供了匿名认证的功能,它为一个用户创建一个用户会话,不需要任何凭证。 在我们的应用程序中,

  • 我必须使用laravelajax将数据保存在具有userid的数据库表中。谁能帮我解决这个问题 我的控制器代码 它得到的反应是 我必须保存登录用户ID提交......我user_id空我怎么存储user_id请帮帮我。 提前谢谢

  • 我想在创建新用户时添加用户的DisplayName。当我尝试使用updateProfile方法时,它会发出以下警告 ///更新用户的配置文件数据。 @已弃用('将在版本2.0.0中删除。''改用updatePhotoURL和updateDisplayName。', 你怎么能避开这个?? flutter: User(显示名称:null,电子邮件:test1@gmail.com,emailVerifi

  • 我正在尝试创建一个应用程序,我必须注册用户,我正在使用Firebase进行注册,一旦我将所有数据放入register,然后进入Firebase数据库,我发现我自己并不是在测试模式下创建数据库的注册用户。你能解释一下我可能做错了什么吗? 注册用户代码: 我正在使用实时数据库 规则Firebase: