我在这里有两个火力问题:
在解析值时,以编程方式将ID复制到本地模型(从数据库中排除)是一个好习惯吗?B /另一种解决方案是:
val newPostRef = ref.child("posts").push() val key = newPostRef.key newPostRef.setValue(Post(key, "title", "content"))
像这样,post id将由数据库模型保存,并使用 getValue(Post :: class)自动解析。
我觉得这不是一个好的解决方案,但请告诉我原因:)
此致
答案 0 :(得分:2)
这两种解决方案都保证了数据的一致性,但在数据库大小方面,解决方案A优于解决方案B.
通过使用解决方案B,您的数据库结构如下所示:
"posts":{
"nTY5U5NJJbPTJaPksPRNqau15H53" : {
"message" : "Hello World",
"sender" : "Rosário Pereira Fernandes",
"key" : "nTY5U5NJJbPTJaPksPRNqau15H53"
}
}
这应该使用 180字节的磁盘空间。请注意,此键在节点上重复两次。为什么不删除它以节省空间?
使用解决方案B,您拥有一个较小的数据库:
"posts":{
"nTY5U5NJJbPTJaPksPRNqau15H53" : {
"message" : "Hello World",
"sender" : "Rosário Pereira Fernandes"
}
}
这将使用 135字节。那个 45个字节比解决方案B少。现在假设您的数据库中有1000个帖子。您已在解决方案B上使用 45000字节更多。这足以存储大约300个帖子,但它会被额外的键属性占用。
不要忘记已存储GB的Firebase Database has some price limitations和已下载的GB。通过使用解决方案B,您可以比使用解决方案A更快地达到此限制。