firebase - 实时数据库中根节点和命名空间节点之间最好的是什么?
问题描述
我有一个关于实时数据库建模的问题
我有很多关于“用户”的数据并想使用:
1.nodes 作为命名空间,如:
/users/accounts/{ids}
/users/profiles/{ids}
/users/records/{ids}
- 根节点如:
/usersaccounts/{ids}
/usersprofiles/{ids}
/usersrecords/{ids}
对于 1,我想知道过滤器是否适用于查询中给出的参考,还是适用于所有'/users'
节点?
例如,我只想在'/users/accounts'
必要时过滤数据,而不是在所有'/users'
节点上过滤以获得过滤'accounts'
数据。
1 和 2 之间的最佳方法是什么?
性能怎么样?
提前致谢
解决方案
如果你有这个数据库:
users
accounts
randomId
accNum: 1234
randomId
accNum: 1234
profiles
randomId
profile: 124
randomId
profile :125
如果每个节点下都有大量数据,则使用此模式,因此如果每个profile
用户accounts
都有大量数据,则使用此模式。此外,如果您想查询 insideaccounts
或 inside的数据profile
,那么您应该使用此模式。
例如:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("users");
ref.child("accounts").orderByChild("accNum").equalTo(1234) //1
ref.child("profiles").orderByChild("profile").equalTo(124) //2
1- 将根据账户内的 accNum 进行过滤
2-将根据配置文件内部配置文件进行过滤
基本上,第一个和第二个模式都彼此接近,但是如果您想检索users
节点内的所有内容,请使用此模式。
推荐阅读
- python - 如何遍历 python 中的 np.zeros 数组,一一打印列?
- html - 如何在我的 getProjectLists 上调用我创建的方法以从字符串中删除 HTML 标记
- c# - ExcelDataReader 出现 C# 错误
- c++ - Minimum number of Appends needed to make a string palindrome
- jms - In Hybris,can we start and stop a IBM JMS listener via a cronjob
- php - Onesignal 网络推送覆盖
- javascript - 仅读取 firebase 中的某些字段
- python - 在 Python 类中使用 @property 装饰器来处理相互关联的属性
- sql - SQL“GROUP BY”多行忽略一个
- c# - 获取 Google 凭据的默认路径 Json 时出错