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

标签 firebase firebase-realtime-database

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

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

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

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

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

他们在这里存储带有 UID 的用户。然后,您可以简单地 push() 新用户,他们的 ID 是随 secret 钥,例如以下 -JRHTHaKuITFIhnj02kE

以上哪一项是存储用户的最佳方式?用户名、自定义 UID 还是随机生成的 key ?

最佳答案

当您有一个集合想要按时间顺序排序(其中各个项目没有自然键)时,Firebase 推送 ID 非常有用。所以是博客文章、聊天消息等的列表。

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

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

关于firebase - 在 Firebase 数据库中存储用户的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38853122/

相关文章:

ios - Firebase 两次使用 queryEqualTo()

android - 如何在 android firebase 聊天中显示打字指示器

javascript - 检索 Array Firebase 数据库的键和元素

typescript - 如何使用 typescript 在 firebase 函数中迭代实时数据库

Python firebase数据库浅层获取数据

android - 无法接收 firebase 云消息,react--native-firebase

android - 更新PlayService版本为12.0.0后无法运行应用

node.js - 问题将 Firebase 添加到 Electron 项目,gRPC 依赖问题

swift - 什么是提供的存储桶?

Firebase 身份验证触发器 : How to get the domain name