【发布时间】:2019-06-13 02:21:00
【问题描述】:
我想在firebase中存储一个自定义对象Event,一个Event可以有几个StopOff和User,我将它们保存在Event对象中作为[StopOff]和[User]
但是,当我尝试保存到 Firebase 时,我发现这些类型不是 Firebase 支持的基本可保存类型。
这对于单个对象来说没问题,因为我可以使用 toAnyObject 方法将它们映射到基本键和值,但是对于数组我看不到为数组中的每个项目实现这一点的方法吗?
当这些自定义模型数组中还有更多自定义对象创建树时,情况会变得更糟
这是我遇到问题的方法
func toAnyObject() -> Any {
return [
"name": name,
"users": users,
"startPoint": startPoint.toAnyObject(),
"endPoint": endPoint.toAnyObject(),
"stopOffs": stopOffs
]
}
我确信我的方法一定是不正确的,因为我习惯了传统的 SQL 后端,但我希望我的方法得到纠正
【问题讨论】:
-
你使用的是firestore还是实时数据库?
-
firestore 我相信
-
我认为您的做法是错误的,并且会将自己编码到一个角落。 Firestore 存储字符串、布尔值、数字、日期、null 以及嵌套数组和对象,但请注意,对于对象:Swift 不支持此功能。请改用值类型。。所以。不要存储对象。仅存储基本数据类型。您应该真正研究基于文档的 NoSQL,因为它引用了 SQL 的飞跃,并且在处理数据时需要不同的思维过程。例如,您可以考虑将其字段作为属性的“文档”和对象。
-
感谢您对此的见解,在正确的方法中是否有任何好的指南/您能否建议更适合该模型的实施?当模型必须包含其他模型的关系时,我正在努力寻找有关使用多个基本类型的教程
-
Todd 整理了一个great series on Firestore,它在#3 和#4 中深入介绍了数据库架构。
标签: ios swift firebase google-cloud-firestore