angular - 角火库;查询参数的最佳实践
问题描述
我正在编写一个模块,让用户设置所有用户都可以查看的给定属性。这一切都发生在 /users 网址上。
如果用户已登录且 url 为 /users,则显示用户自己的个人资料。如果 url 为 /users/{id},则获取该 id 并用于查询数据库以获取该用户参数。
我的问题是 - 使用用户 uid 作为 id 参数是否被认为是不好的做法?这实质上为用户的数据提供了一个行 ID。每个用户一开始都拥有的唯一其他参数是电子邮件地址,所以我不确定还能做什么。
还有其他最佳做法吗?
我对该集合的规则设置为任何用户都可以阅读记录,但任何用户只能编辑自己的个人资料。通过赠送该 ID,我非常信任该规则。
解决方案
我不认为使用 id 是一个坏习惯。它可能对 SEO 不友好,但不一定是坏习惯。
您必须记住,无论如何,记录 id 在客户端都是可见的(假设您使用的是 @angular/fire 库)。配置 Firestore 安全规则以禁止一个用户更改另一个用户的记录非常重要。
如果您正在构建一个用户也有用户名(或@username)的社交网络,您可能需要考虑使用用户名作为他们的 id,以便 URL 看起来像/users/@<username>
或users/<username>
,或者您可以创建一个从用户名翻译的集合到用户的id,这是基于观察的更流行的解决方案。
就我个人而言,我两者都做过,而且我对其中一个没有偏好。
推荐阅读
- rust - 有没有一种方法可以将期货 0.1 转换为标准库期货?
- python - matplotlib中如何链接水平轴和垂直轴(类似于sharex/sharey)
- jquery - jQuery 检查 .each() 项目中的数组,然后为每个项目独立做一些事情
- java - 如何在 Guava 回调中处理关闭执行程序?
- angular - 如何清除我的 Angular 反应形式?
- database-design - 如何确保跨多个表的业务规则完整性?
- mysql - MySQL - 限制的微小变化在获取时间上有很大的变化
- c# - C# 删除 JSON 文件中的文本
- sql-server - ubuntu 和 libtdsS.so 上的 unixodbc 缺失
- reactjs - 我们可以使用 `useTransition` 推迟哪些类型的状态更新?