在Firebase数据库中存储用户的正确方法

Mic*_*nes 4 firebase firebase-realtime-database

目前我正在为我的Firebase数据库进行数据库布局.我正在浏览许多关于布局应该如何看的不同教程,但我对什么是正确的有点困惑.

我不确定用户应该存储的内容,让我举个例子:

{
  "users": {
    "alanisawesome": {
      "nickname": "Alan The Machine"
    },
    "gracehop": {
      "nickname": "Amazing Grace"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在Firebase Legacy文档的上述示例中,他们按用户名存储用户.然而在另一个例子中我发现了以下内容:

{
  "users": {
    "123": {
      "name": "Kato"
    },
    "234": {
      "name": "Anant"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在这里,他们使用UID存储用户.然后,您可以只是push()新用户,他们的ID是随机密钥,如下所示-JRHTHaKuITFIhnj02kE.

以上哪个是存储用户的最佳方式?用户名,自定义UID或随机生成的密钥?

Fra*_*len 12

当您拥有一个按时间顺序排序的集合时,Firebase push id非常棒,其中单个项目没有自然键.所以列出了博客文章,聊天消息等.

但是当项目具有自然键时,通常最好将它们存储在该自然键下.用户拥有唯一的ID,通常称为他们的ID uid.除非您有理由不这样做,否则请将用户存放在他们的下面uid.通过将它们存储在它们下面uid,您可以轻松查找给定用户的数据:ref.child('users').child(user.uid).如果您将用户存储在生成的密钥(例如推送ID)下,则必须执行查询以查找相同的记录.

您从文档中获得的示例使用不同的命名方案.原因是推送ID和UID都会导致比我们在那时的文档中更多的混淆.这就是为什么我们在这些情况下选择简短易读的键.