【发布时间】:2016-09-24 03:50:18
【问题描述】:
我正在使用 Firebase 构建一个具有两个模型的应用程序,A 和 B:
-
A和B之间存在一对多的关系(A有很多B)。 -
A和B需要放在易于查询的地方,因此我需要一种方法来获取所有具有满足条件的属性的A模型。与B相同。 -
B有一个属性createdAt(永远不会改变)和一个属性status(不时改变),我想列出由特定A拥有的所有Bs以及 @987654338 @ 和/或createdAt属性满足某些条件。 -
Bs是私有的,只能由经过身份验证的用户读取,并且可以读取它们所属的A(如果可以读取a1和a1属于b1,则用户可以读取b1) .
在Firebase guidelines 之后,我的第一次尝试是做这样的事情:
"As": {
"a1": {
...
Bs: {
"b1": true,
...
},
},
...
},
"Bs": {
"b1": {
...,
"status": "OPEN",
"createdAt": 1464249410579,
},
...
},
此解决方案的问题是,要访问属于a1 的Bs,其状态为OPEN 并且不超过一个月,我必须访问a1.Bs,获取所有id 然后访问Bs 一个一个(这很好,根据Firebase guidelines)然后过滤它们以找出它们是否满足我的条件,我发现这非常低效。
关于如何做到这一点的任何建议?
【问题讨论】:
-
这取决于您希望如何访问数据,但将其全部放在
As下将解决您描述的问题 -
当你说
A有很多B。b可以链接到许多a吗?我的意思是a1和a2都可以有b1? -
@eikooc 这样做的问题是它会使
B难以搜索。 -
@Crema no.这是一对多的关系,而不是多对多的关系。
-
复制数据即可。这就是人们通常使用 NoSQL 数据库所做的事情
标签: firebase firebase-realtime-database