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

时间:2016-08-09 14:09:23

标签: firebase firebase-realtime-database

目前我正在为Firebase数据库开发数据库布局。我正在浏览许多关于布局应该如何看的不同教程,但我对于什么是正确的我感到有些困惑。

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

{
  "users": {
    "alanisawesome": {
      "nickname": "Alan The Machine"
    },
    "gracehop": {
      "nickname": "Amazing Grace"
    }
  }
}

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

{
  "users": {
    "123": {
      "name": "Kato"
    },
    "234": {
      "name": "Anant"
    }
  }
}

这里他们使用UID存储用户。然后,您只需push()个新用户,其ID就是随机密钥,例如以下-JRHTHaKuITFIhnj02kE

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

1 个答案:

答案 0 :(得分:12)

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

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

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