当前位置: 首页 > 面试题库 >

如何设计一个简单的存储阵列的Firebase数据库?

蒋茂
2023-03-14
问题内容

我正在使用Swift中使用Xcode
8.2.1编写IOS应用程序的代码。目前,我已经为实现GeoFire并成功向数据库添加位置的一个视图控制器设置了数据库。在单独的视图控制器上,我想添加对同一数据库的引用,并将子级添加到该引用。

这个单独的引用我想存储可以通过数组名称访问的不同数组。我希望能够添加和删除数据库中保存的数组。另外,我希望能够添加和删除保存在每个单独数组中的字符串。

我尝试过的代码是:

    let ref = FIRDatabase.database().reference()

    let childRef = FIRDatabase.database().reference(withPath: "arrays")

    let itemsRef = ref.child("arrays")

    let milkRef = itemsRef.child("array1")

但是,当我运行此代码时,数据库不会更新以显示任何新的子代。有可能完成我的任务吗?如果是这样,我在做什么错?

如果我的问题仍然不清楚,请让我知道,我将详细说明。预先感谢您的任何帮助!


问题答案:

读这篇文章: 数组是邪恶的

通常,最好避免使用它们,因为通常会有更好的方法来组织数据。

这是一些信息:

这将创建一个名为child_node的节点,并为其分配some_value的值。

let ref = FIRDatabase.database().reference()
let childRef = ref.child("child_node")
childRef.setValue("some_value")

结果是

root
  child_node: some_value

如果再次运行该代码,它将覆盖现有节点。

通常,最好将节点名称与它们包含的数据解除关联,以便扩展一点

let ref = FIRDatabase.database().reference()
let childRef = ref.childByAutoId()
childRef.setValue("some_value")

结果是

root
   -Y8hjj9a99js9jd: some_value
   -Yi00ksomosooss: some_value //the second time it's run

然后再进一步

let ref = FIRDatabase.database().reference()
let childRef = ref.childByAutoId()
let someData = ["site": "Olympus Mons", "location": "Mars"]
childRef.setValue(someData)

结果是

root
   -Y88ujs9mskkms:
         site: "Olympus Mons"
         location: "Mars"

因此,您会问自己“自己,这与数组有什么关系”?

这是存储“额外”数据的更好方法。因此,例如,您可以将用户位置存储在其节点内

root
  users
     -Yi8joiomso (uid)
         g: xxxx
         l:
           0: xxx
           1: xxx

或保留对它们在另一个节点中的位置的引用

root
  users
     -Yi8joiomso (uid)
       location: -Yiuhj89ejee
  location
     -Yiuhj89ejee
         g: xxxx
         l:
           0: xxx
           1: xxx

或将用户保留在位置节点内

root
  location
    userID
       g: xxxx
       l:
          0: xxxx
          1: xxxx

非数组结构为查询,检索数据和组织数据提供了更大的灵活性。



 类似资料:
  • 我想模拟一个学生,老师,班级的关系。每个学生都和一个老师联系在一起(老师可以有很多学生)。只有三个班级。我认为这是三个表格: 学生桌- 教师桌 - 班级表- 我不确定如何在表格中显示师生关系。我们怎么知道哪个老师被分配给哪个学生呢?

  • 因此,我在为我的数据库提出实体关系时遇到了一些麻烦,但是我已经完成了一些设计过程,并且是最低口径的。将创建数据库,以便学生可以有许多课程的许多对许多关系(显然我知道)。数据库需要每天跟踪家庭作业和出勤率。但是,课程可以只是一周中的一天或许多天。 顾问- 学生- 课程- 学生课程- 这里我陷入了困境,我想创建一个日历表,但我如何将数据关联到作业表和出勤率。如有任何建议,欢迎批评指正。

  • 我查阅了许多存储库设计模式教程,如 https://asperbrothers.com/blog/implement-repository-pattern-in-laravel/ https://www.larashout.com/how-to-use-repository-pattern-in-laravel https://laravelarticle.com/repository-desig

  • 问题内容: 我正在尝试开发一个python程序,该程序允许用户输入有关个人详细信息的数据,并在以后查看它们以进行处理。 该程序可供少于5个人同时使用。因此,我正在考虑使用数据库,因为我认为它应该能够应付这么多的流量。 我想到的框架工作是,客户端将在每台计算机上拥有自己的python pyqt程序副本。每当他们执行任何需要读取/写入数据的操作时,它将通过Internet连接到服务器并从服务器上的读取

  • 问题内容: 如果我不需要localStorage,我的代码将如下所示: 这可行。但是,我需要将此变量存储在localStorage中,事实证明它很顽固。我试过了: 我要去哪里错了? 问题答案: 仅支持字符串。使用和。

  • 问题内容: 我对学习数据库引擎的工作方式(即它的内部)感兴趣。我知道CS中讲授的大多数基本数据结构(树,哈希表,列表等),以及对编译器理论的很好理解(并实现了一个非常简单的解释器),但我不知道该怎么做关于编写数据库引擎。我已经搜索了有关该主题的教程,但找不到任何教程,因此我希望其他人可以向我指出正确的方向。基本上,我想了解以下信息: 数据如何在内部存储(即表的表示方式等) 引擎如何查找所需的数据(