0
这里是我的火力地堡数据结构:火力地堡数据库访问多个记录
{
"companies": {
"-Ke_b8p6OBaz1VCeovAH": {
"display_name": "First User's Company",
"users": {
"ir7jjLPA3fXCVsdc4OzzSiH9RJd2": "admin"
}
},
"-Ke_cmhDaIeGJjFwsDI1": {
"display_name": "First User's Second Company",
"users": {
"ir7jjLPA3fXCVsdc4OzzSiH9RJd2": "admin"
}
},
"-Ke_b9OgwY2IBdj5szmJ": {
"display_name": "Second User's Company",
"users": {
"5XcpmN7DgEWNnmWZucyQiOh4TJt2": "admin"
}
}
},
"users": {
"ir7jjLPA3fXCVsdc4OzzSiH9RJd2": {
"display_name": "First User"
},
"5XcpmN7DgEWNnmWZucyQiOh4TJt2": {
"display_name": "Second User"
}
}
}
我试图做此数据的查询(通过REST例如):
example.firebase.com/companies.json?orderBy="users/ir7jjLPA3fXCVsdc4OzzSiH9RJd2"
我希望返回
{
"-Ke_b8p6OBaz1VCeovAH": {
"display_name": "First User's Company",
"users": {
"ir7jjLPA3fXCVsdc4OzzSiH9RJd2": "admin"
}
},
"-Ke_cmhDaIeGJjFwsDI1": {
"display_name": "First User's Second Company",
"users": {
"ir7jjLPA3fXCVsdc4OzzSiH9RJd2": "admin"
}
}
}
相反,我得到
{
"error": "Index not defined, add \".indexOn\": \"users/ir7jjLPA3fXCVsdc4OzzSiH9RJd2\", for path \"/companies\", to the rules"
}
这里是我的火力地堡安全规则
{
"rules": {
".read": true,
".write": true,
// Companies
"companies": {
".indexOn": ["display_name", "users"],
}
}
}
这是不可行的索引更新为每个用户的安全规则,所以我会怎么处理呢?
“Firebase不支持任何类型的过滤/搜索。”这种说法在这方面似乎有误导性。不是本身搜索,而是'orderBy' +'equalTo'是一个简单的过滤器,适用于@ Cody的问题。我不熟悉REST API,但是对孩子的孩子进行排序,称为[deep querying](https://firebase.googleblog.com/2015/09/introducing-multi-location-updates-and_86.html ),在SDK中肯定是可行的。 –
因为Firebase文档中有关于排序和过滤数据的整个部分,所以我确实会更改第一句话:https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data。 –
@TravisChristian - 我读过那篇文章,以及Frank发布的一篇文章。但是,我无法查询上面提到的方式。 随着深入查询他们的参考,密钥总是相同的,即'高度','重量'等。 我正在查询将改变的键。键是用户uid。此外,将这些ID作为密钥存储在字典中是Firebase数据库中推荐的存储实践。 https://firebase.google.com/docs/database/web/structure-data#fanout –