Firebase - 获取包含密钥的所有记录

Firebase - Get all records which contains a key

我在 Firebase 中有一系列记录,例如:

{
  records: {
    n1: {
      f1: 1,
      f2: 0,
      f3: 1
    },
    n2: {
      f1: 0,
      f4: 1,
      f5: 0
    }
  }
}

我想使用索引获取包含键 f1 的所有记录,无论其内容可能是什么(0 或 1)

有办法用 Firebase 做到这一点吗?

Firebase 查询无法测试 属性 是否存在,只能测试它们的值。

解决此限制的最简单方法是添加一个 属性,其值表明存在您要查找的 属性。是的...通过示例可能更容易理解:

{
    "records": {
        "n1": {
            "f1": 1,
            "f2": 0,
            "f3": 1,
            "has_f1": true
        },
        "n2": {
            "f1": 0,
            "f4": 1,
            "f5": 0,
            "has_f1": true
        },
        "n3": {
            "f7": 8,
            "f8": 0
        }
    }
}

有了这个你可以查询:

ref.child('records')
   .orderByChild('has_f1')
   .equalTo(true)
   .on('child_added', function(snapshot) {
       console.log(snapshot.val()); 
   })