如何为 ios、swift 构建结构化的实时 firebase 数据库?

How to build structured realtime firebase database for ios, swift?

我目前正在为我的 ios 应用程序设置我的实时 firebase 数据库。 这是我第一次尝试在 firebase 数据库中构建用户数据,我真的非常努力地理解一些关键的事情。

我的应用程序数据库需要的一些上下文:

创建新用户时,直接分配给用户的属性是:

稍后,用户需要创建个人日记的选项! 这些日记中的每一个都是 arrays/lists 个对象...其中日记中的每个对象还包含 list/array.

中的一些属性

在阅读了我能在任何地方找到的所有内容后,我将我的数据库想象成这样:

如果问题变得过于具体,我深表歉意 - 我会尽量让问题开放:

我的问题是:

如何以编程方式创建不同的 "children" 以及如何找到返回它们的键,以便我可以在其他时间再次引用它们? (在子项中编辑属性时)。

我试过的几种方法:

如果有人能告诉我如何仅完成设置数据库结构的前几个步骤,我将永远感激不已 - 我已经花了一整天的时间,但我没有继续前进......

或者至少告诉我,关于我想要的数据库设置,我是否走在正确的轨道上。它足够平坦吗?有没有更智能的方法来存储所有这些用户创建的列表?

非常感谢! :-)

我不知道 Swift 所以我的示例是在 Dart 中,但我相信方法相似。

首先,我会将用户节点一分为二。一个保存用户数据,通常是非常静态的,另一个保存日记。您将使用相同的 uid 密钥作为对两者的引用。这样您就不必担心嵌套,因此更容易对数据进行 CRUD。如果您使用 Firebase 对您的用户进行身份验证,那么我会使用 Firebase 为每个用户创建的唯一密钥作为这两个节点的密钥。

然后...

要创建一个用户数据节点记录,Dart 代码应该是这样的:

referenceUserData.child(<authenticated user id>).set({
  "age": <age value>,
  "email": <email value>,
  "name": <name value>,
});

要创建一个用户日记节点对象记录,Dart 代码应该是这样的:

referenceUserData.child(<authenticated user id>).child(<diary key>).child(<diary object key>).set({
  "object info value 1": <object value>,
  "object info value 2": <object value>,
  "object info value 3": <object value>,
});

您还可以通过使用 .set() 将它们写入列表(数组)来一次创建所有对象记录。

您还需要决定您的日记键应该是什么。您可以使用 Firebase 通过使用 .push().set().

生成唯一密钥

阅读例如。用户数据然后你的电话可能是:

referenceUserData
  .child(<authenticated user id>)
  .once()
  .then(
(DataSnapshot snapshot) {
  print(snapshot.key);
  if (snapshot.value != null) {
    print(snapshot.value);
    <code to process your snapshot value>
  }
};

顺便说一句,'priority' 是早期 Firebase RTDB 的遗留物,所以我不会尝试使用它。