0

我有一个创建并保存火力地堡下新用户作为/users/<uid>如何使用Firebase为新用户创建自定义网址?

不过,我也希望让每个用户有一个自定义的网址为他们的个人资料页,像domain.com/users/john-daviddomain.com/users/john-david-1343(一个反应,和/终极版应用程序,如果原来的/users/john-david已被采纳。)

这样做的最好方法是什么?

我的问题是,我打算将/users/<firstname-lastname-hash>下的用户存储在Firebase中,但这似乎是一个坏主意,将它们存储在除uid以外的任何东西(这是真的吗?)。

而且,如果我不这样做,那么我怎么保持火力地堡/users/<uid>,创造有占重复新的用户名,如果用户访问domain.com/users/john-david-123

这里时存在搜索是一些示例其中,新用户会保存的代码火力

export function saveUser (data, user) { 
    let username = data.username 
    return ref.child(`users/${user.uid}/info`) 
    .set({ 
     email: user.email, 
     firstname: data.firstName, 
     lastname: data.lastName, 
     admin: false, 
     // for /users/<username> 
     username: username, 
     uid: user.uid 
    }) 
    .then(() => user) 
} 

回答

2

一般我们说,你应该存储在火力地堡数据,你打算如何查看它,而且也特别没有理由,你必须使用UID为您存储用户时的主键。你可能想的是:

  1. /users/${username}存储用户数据,如你所说,包括uid场。
  2. 当用户注册时,生成firstname-lastname slu and并存储在/uids/${uid} = username中。

这样你就有了一个简单的方法来从UID映射到用户,反之亦然。这里的缺点是,一旦你将用户名粘贴到你的数据结构中,你应该永远不要让他们改变他们的用户名。

或者,您可以撤消我的建议并存储/usernames/${username} = uid/users/${uid}。这样可以更轻松地重命名用户名,但需要您执行额外的查找才能从用户名到数据。

+0

这么简单,我想打我自己。很好的答案和我最终的结局。 –

相关问题