Android Firebase 数据库查询 select 有条件
Android Firebase Database query select with condition
我想SELECT * FROM products WHERE 'birthday' = true;
但是我可以对 Firebase 数据库做同样的事情吗?
我试过了
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
ref. child("products").orderByChild("birthday").equalTo(true).addChildEventListener ........
但这没有 work.Please 帮助。
如果我的数据结构不好,还请指教如何创建更好的结构。
数据库的屏幕截图显示 birthday
不是产品节点的直接子节点:有一个额外的步骤,for_purpose
。
您的查询必须严格遵循架构,因此请像这样更新您的查询代码:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
ref.child("products")
.orderByChild("for_purpose/birthday")
.equalTo(true)
.addChildEventListener ...
请注意,要使其有效运行,您必须在安全规则中为每个可能的 for_purpose
子项设置索引。或者至少对于您在查询中使用的那些。索引必须 完全匹配您的查询 ,在 for_purpose
上放置索引是不够的。
对于这道题,你至少需要具备以下条件:
{
"rules": {
"products": {
".indexOn": [
"for_purpose/birthday",
"for_purpose/anniversary",
"for_gender/male",
...
]
}
}
}
我想SELECT * FROM products WHERE 'birthday' = true;
但是我可以对 Firebase 数据库做同样的事情吗?
我试过了
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
ref. child("products").orderByChild("birthday").equalTo(true).addChildEventListener ........
但这没有 work.Please 帮助。 如果我的数据结构不好,还请指教如何创建更好的结构。
数据库的屏幕截图显示 birthday
不是产品节点的直接子节点:有一个额外的步骤,for_purpose
。
您的查询必须严格遵循架构,因此请像这样更新您的查询代码:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
ref.child("products")
.orderByChild("for_purpose/birthday")
.equalTo(true)
.addChildEventListener ...
请注意,要使其有效运行,您必须在安全规则中为每个可能的 for_purpose
子项设置索引。或者至少对于您在查询中使用的那些。索引必须 完全匹配您的查询 ,在 for_purpose
上放置索引是不够的。
对于这道题,你至少需要具备以下条件:
{
"rules": {
"products": {
".indexOn": [
"for_purpose/birthday",
"for_purpose/anniversary",
"for_gender/male",
...
]
}
}
}