我有一个React / Redux应用程序,可以在/users/<uid>
但是,我还想让每个用户都有自己的个人资料页面的自定义网址,例如domain.com/users/john-david
或domain.com/users/john-david-1343
(如果原来的/users/john-david
已被采用。)
最好的方法是什么?
我的问题是我要将用户存储在Firebase中的/users/<firstname-lastname-hash>
下,但将它们存储在除了uid以外的任何内容之类似乎是个坏主意(这是真的吗?)。
但是,如果我不这样做,那么如何在Firebase中维护/users/<uid>
,同时创建考虑重复的新用户名,并在访问{{1}时搜索用户是否存在}
以下是新用户保存到Firebase
的示例代码domain.com/users/john-david-123
答案 0 :(得分:2)
一般情况下,我们说您应该在Firebase中存储数据,以便查看它的方式,并且在存储用户时必须使用UID作为主键是没有理由的。您可能想要的是:
/users/${username}
,包括uid
字段。firstname-lastname
子弹并存储在/uids/${uid} = username
。通过这种方式,您可以使用简单的方法从UID映射到用户,反之亦然。这里的缺点是,一旦你将用户名加入你的数据结构,你可能永远不会让他们改变他们的用户名。
或者,您可以撤销我的建议并存储/usernames/${username} = uid
和/users/${uid}
。这样可以更轻松地重命名用户名,但要求您执行额外的查找以从用户名转到数据。