我的班级结构如下。
class User{
String name;
Thing things[];
}
interface Thing{
}
class ThingA implements Thing{
String something;
}
class ThingB implements Thing{
String anotherthing;
}
在Firebase中保存User
对象的最佳方法是什么?
我目前正在做的事情是这样的
{
"users": {
"name": "My Name",
"thingAs": [{
"something": "value",
}],
"thingBs": [{
"anotherthing": "value",
}]
}
}
我想不出另一种方法。您有更好的解决方案吗?
谢谢!!
答案 0 :(得分:1)
最主要的是,您需要在数据库中使用一个标记来指示每个事物的类型。在数据模型中,已将该标记建模为存储该类型的对象的节点的键。
另一种模型是分别为每个项目存储类型标记。所以:
"userA": {
"name": "My Name",
"things": [{
"type": "ThingA",
"something": "value",
}, {
"type": "ThingB",
"anotherthing": "value",
}]
}
两个模型都可以工作,并且两个模型都有优点和缺点。我很快就能想到的其中一些:
这里没有奇异的正确模型。与NoSQL数据建模一样,这一切都取决于应用程序的用例。例如:如果项目的顺序对您的应用不重要,那么问题中的模型可以为您节省一些数据库存储空间。