【问题标题】:How do I design a simple Firebase Database that stores arrays?如何设计一个存储数组的简单 Firebase 数据库?
【发布时间】:2017-02-10 19:06:30
【问题描述】:

我正在使用 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")

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

如果我的问题有任何不清楚的地方,请告诉我,我愿意详细说明。提前感谢您的帮助!

【问题讨论】:

  • 此视频可能对您有所帮助:youtube.com/watch?v=XIQsQ2injLo
  • 您实际上并没有写入任何数据。 “同一个数据库”是指同一个节点还是整个 Firebase 数据库?

标签: arrays swift xcode firebase firebase-realtime-database


【解决方案1】:

阅读:Arrays are evil

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

这里有一些信息:

这将创建一个名为 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

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

【讨论】:

    猜你喜欢
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    相关资源
    最近更新 更多