繁体   English   中英

如何使用Cloud函数中的indexOn从实时数据库检索数据

[英]How to retrieve data from realtime database using indexOn in cloud functions

Firebase结构:

{
  "config" : [
    {
      "config1" : {
        "hideimage" : true
      }
    },
    {
      "config2" : {
        "hideimage" : false
      }
    }
  ]
}

数据库规则:

"config": {
  ".indexOn": ["hideimage"]
}

我正在尝试使用以下方法检索所有具有hideimage属性设置为true的配置项:

 admin.database().ref('config').orderByChild("hideimage").equalTo(true).once('value', result => {});

预期结果应为:

[{
  "config1" : {
    "hideimage" : true
  }
}]

但我正在获取一个空响应,而没有收到任何错误。

您的数据结构包含两个嵌套级别:

  1. 你有一个数组
  2. 在第一个数组元素中,您有config1config2

如果查看Firebase控制台,您会看到此信息,数据将显示如下:

{
  "config" : {
    "0": {
      "config1" : {
        "hideimage" : true
      }
    },
    {
      "config2" : {
        "hideimage" : false
      }
    }
  }
}

Firebase只能查询平面列表中的节点,而不能查询树。 因此,使用您当前的数据结构,它只能在/config/0下找到具有hideimage=true的节点, 而不能在所有/config子项下找到。

由于您已经唯一地命名了config1config2 ,所以我认为该数组可能是一个错误,并且您确实在寻找:

{
  "config": {
    "config1" : {
      "hideimage" : true
    },
    "config2" : {
      "hideimage" : false
    }
  }
}

使用此数据结构,您的查询将起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM