目前,我正在为Firebase数据库设计数据库布局。我正在浏览许多有关布局外观的不同教程,但对于合适的东西我有些困惑。

我不确定应将用户存储为什么,让我举个例子:

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


在上述Firebase旧版文档的示例中,他们通过用户名存储用户。在另一个示例中,我发现了以下内容:

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


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

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

最佳答案

如果您有一个要按时间顺序排序的集合,而单个项目没有自然键,则Firebase推送ID非常有用。因此,列出了博客文章,聊天消息等。

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

您从文档中获得的示例正在使用不同的命名方案。这样做的原因是,推送ID和UID都会导致比当时我们在文档中想要的混乱更多。这就是为什么在这种情况下我们选择短而易读的密钥的原因。

07-24 09:47
查看更多