将用户数据保存在firebase firestore中的最佳做法?
我正在使用firebase作为我的Android应用程序的后端。该应用程序是一个社交媒体应用程序,用户可以在其中发布、评论等。因此,我将用户数据存储在将用户数据保存在firebase firestore中的最佳做法?,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,我正在使用firebase作为我的Android应用程序的后端。该应用程序是一个社交媒体应用程序,用户可以在其中发布、评论等。因此,我将用户数据存储在user\u集合中,该集合由安全规则保护,其中ifuid==auth.uid(任何用户只能访问自己的数据) 现在在这个应用程序中,当一个用户发布一些东西时,每个用户都可以看到这个帖子。在post_集合中,我将用户ID保存在post_文档中 所以问题是我需要向其他用户显示用户名,并且我只有userId,但问题是由于安全规则,用户无法通过uid获取其他
user\u集合
中,该集合由安全规则保护,其中ifuid==auth.uid
(任何用户只能访问自己的数据)
现在在这个应用程序中,当一个用户发布一些东西时,每个用户都可以看到这个帖子。在post_集合中,我将用户ID保存在post_文档中
所以问题是我需要向其他用户显示用户名,并且我只有userId,但问题是由于安全规则,用户无法通过uid获取其他用户的名称。现在我必须为这个问题提供解决方案请告诉我哪一个更好,或者您也可以建议其他解决方案?
getUserNameById()
(问题:当用户滚动时,我需要在提要中频繁调用此函数)
post\u doc
中存储姓名(问题:当用户更改姓名时,它将在旧帖子中显示旧姓名)
感谢您的善意帮助考虑解决方案:您需要的任何公共数据(作者姓名、作者用户PIC链接等)只需在帖子创建时与帖子一起保存即可。 因此,您的消息Pojo将如下所示:
- 身份证
- 作者姓名
- 正文
即使没有严格的安全措施(因为这需要时间和文档读取),随时前往User_collection文件夹取用户名也不是一个好办法。在您描述的场景中,我通常会将用户名存储在每个post doc中。我也会忽略名称的更新,因为我认为post doc中的用户名是一个历史值:这是用户发布此内容时的名称。当然,现在您可能需要不同的行为,在这种情况下,我建议您阅读:
您使用云函数的方法也很好,在某些情况下非常常见。但是我倾向于只使用云函数来读取数据,因为读取操作本身特别复杂,这里不是这样。在这样的情况下,我建议提出一个数据模型,允许您需要的用例和安全性 例如:如果创建一个集合
usernames
,其中每个文档都有UID作为其文档ID,然后包含一个包含该UID用户名的字段,则可以通过Firestore实现用户名的查找
所以你可以:
/users/$uid
中/usernames/$uid
中/users/$uid
时触发,并更新/usernames/$uid
/usernames/$uid
文档,甚至可以在需要时一次性读取整个/usernames
集合通过这种方式,可以在客户端缓存用户名,并在应用程序脱机时继续工作,这与使用云函数查找用户名的方法不同。非常感谢,我已经接受了您的答案。另一个问题的链接非常有用&我将采用不关心的方法。哈哈。。。。。