swift - 将 swift 中的对象层次结构映射到 firebase

标签 swift firebase inheritance firebase-realtime-database nosql

我想将 swift 中的对象层次结构映射到 firebase,并且我正在尝试找出执行此操作的最佳模式。

我有一个带有属性 propParent 的父类 Parent 和两个子类:带有属性 propChild1Child1和具有属性 propChild2Child2

将其映射到 Firebase 架构的最有效且可维护的方法是什么。

class Parent {
    var propParent: String
}
class Child1: Parent {
    var propChild1: String
}
class Child2: Parent {
    var propChild2: String
}

最佳答案

在 NoSQL 数据库中,几乎从来没有一个对所有用例都最有效的模型。这是因为在 NoSQL 中,您经常需要针对要在应用程序中实现的每个用例修改和扩展数据模型。为了更好地介绍该主题,我建议阅读 NoSQL data modeling并观看Firebase for SQL developers .

也就是说,最基本的是双向多对多关系,可以建模为:

users
  parent: {...}
  child1: {...}
  child2: {...}
parents: /* contains the parent for each user */
  child1: "parent",
  child2: "parent"
children: /* contains the children for each user */
  parent:
    child1: true,
    child2: true

这里通过为 parents 下的每个节点指定一个值来模拟用户只能有一个父节点的事实。每个用户可能有多个子项被建模为 children 下每个节点的集合。该集合被建模为所谓的索引:String: true 对的集合,其中值 (true) 是无意义的标记。

这使用了其他一些答案中的概念,因此我将链接您以获取更多信息:

关于swift - 将 swift 中的对象层次结构映射到 firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46863850/

相关文章:

android - 更新后 Firebase 重复类错误

java - 在 Java 中,类 B<T> 扩展 A<T> 和类 B<T> 扩展 A 之间有什么区别

inheritance - 应用程序架构中具体继承的主要竞争设计模式是什么?

javascript - 对象没有在 javascript 中调用子类函数

ios - 从两个不同 View 切换多个标签

ios - 如何在 UIImageView 中获取 UIImage 的 x 和 y 位置?

c# - 如何在 Unity android 项目中制作自定义 firebase 事件?

ios - 使用UIRefreshControl刷新tableview

arrays - Swift - 更新多维 NSMutableDictionary 的值

ios - 在标签中显示某个 firebase 子项的值