首页 > 解决方案 > 角火库;查询参数的最佳实践

问题描述

我正在编写一个模块,让用户设置所有用户都可以查看的给定属性。这一切都发生在 /users 网址上。

如果用户已登录且 url 为 /users,则显示用户自己的个人资料。如果 url 为 /users/{id},则获取该 id 并用于查询数据库以获取该用户参数。

我的问题是 - 使用用户 uid 作为 id 参数是否被认为是不好的做法?这实质上为用户的数据提供了一个行 ID。每个用户一开始都拥有的唯一其他参数是电子邮件地址,所以我不确定还能做什么。

还有其他最佳做法吗?

我对该集合的规则设置为任何用户都可以阅读记录,但任何用户只能编辑自己的个人资料。通过赠送该 ID,我非常信任该规则。

标签: angularfirebasegoogle-cloud-firestorefirebase-authentication

解决方案


我不认为使用 id 是一个坏习惯。它可能对 SEO 不友好,但不一定是坏习惯。

您必须记住,无论如何,记录 id 在客户端都是可见的(假设您使用的是 @angular/fire 库)。配置 Firestore 安全规则以禁止一个用户更改另一个用户的记录非常重要。

如果您正在构建一个用户也有用户名(或@username)的社交网络,您可能需要考虑使用用户名作为他们的 id,以便 URL 看起来像/users/@<username>users/<username>,或者您可以创建一个从用户名翻译的集合到用户的id,这是基于观察的更流行的解决方案。

就我个人而言,我两者都做过,而且我对其中一个没有偏好。


推荐阅读