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 ........

Firebase Database image

但这没有 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",
        ...
      ]
    }
  }
}