在 firebase 中更改用户名

Changing username in firebase

我正在使用 firebase 制作一个聊天应用程序。对于包含任何名称的每个文档,我将其创建为 auth.currentUser.displayName。因此,例如,聊天中的每条消息都是一个创建为的文档:

sender: currentUser?.displayName!,
      avatar: currentUser?.photoURL!,
      content: message,
      time,

关于更改用户名,我知道该怎么做,但是如果我更改我的用户名,我将不得不访问包含我的名字的每个用户的所有文档并将其也更改。有更好的方法吗?比如,我使用 user XYZ.displayName 之类的东西,而不是 auth.currentUser.displayName,如果用户 XYZ 更改了它的名称,它也会在所有其他文档中更改。

提前致谢

But if i change my username, i would have to access all the documents of every user that contains my name and change it too.

这确实是 NoSQL 数据库中数据建模的结果,您在其中复制数据而不是像在 SQL 数据库中那样对其进行规范化。

Is there a better way to do it?

除了模仿 SQL 数据库(在唯一的用户文档中包含用户名并在每次要显示此用户名时获取此文档 - 即模仿 SQL 连接)除了更新包含用户名值的每个文档之外别无他法。

模仿 SQL 数据库意味着每次要在聊天中显示一条消息时,您都需要获取包含用户名值的文档(不利于成本和性能)。保持非规范化的方式意味着只有在用户名发生变化时才需要更新所有相应的消息文档。因此,根据用户名更新的频率,您可以决定哪个是最好的。

Like, instead of auth.currentUser.displayName, i use something like user XYZ.displayName, and if user XYZ changes its name, it will also change in every other document.

基本上这不会有任何区别,因为您必须更新所有包含(以前的)用户名的文档。