Firebase数据库:在许多子节点中只获取一个子节点

时间:2018-05-15 07:25:35

标签: node.js firebase firebase-realtime-database

我正在使用firebase实时数据库。我不想获取特定父节点的所有子节点,我关心的是特定节点,而不是兄弟节点。获取所有兄弟节点会增加我在firebase中的计费,因为会获取额外的XXX MB数据。我正在使用NodeJs管理库来获取它。

添加示例JSON

{
  "phone" : {
    "shsjsj" : {
      "battery" : {
        "isCharging" : true,
        "level" : 0.25999999046325684,
        "updatedAt" : "2018-05-15 12:45:29"
      },
      "details" : {
        "deviceCodeName" : "sailfish",
        "deviceManufacturer" : "Google",
        "deviceName" : "Google Pixel",
      },
      "downloadFiles" : {
        "7bfb21ff683f8652ea390cd3a380ef53" : {
          "uploadedAt" : 1526141772270,
        }
      },
      "token" : "cgcGiH9Orbs:APA91bHDT3mI5L3N62hqUT2LojqsC0IhwntirCd6x0zz1CmVBz6CqkrbC",
      "uploadServer" : {
        "createdAt" : 1526221336542,
      }
    },
    "hshssjjs" : {
      "battery" : {
        "isCharging" : true,
        "level" : 0.25999999046325684,
        "updatedAt" : "2018-05-15 12:45:29"
      },
      "details" : {
        "deviceCodeName" : "sailfish",
        "deviceManufacturer" : "Google",
        "deviceName" : "Google Pixel",
      },
      "downloadFiles" : {
        "7bfb21ff683f8652ea390cd3a380ef53" : {
          "uploadedAt" : 1526141772270,
        }
      },
      "token" : "cgcGiH9Orbs:APA91bH_oC18U56xct4dRuyw9qhI5L3N62hqUT2LojqsC0IhwntirCd6x0zz1CmVBz6CqkrbC",
      "uploadServer" : {
        "createdAt" : 1526221336542,
      }
    }
  }
}

在上面的示例JSON文件中,我想要获取所有phone-> $ deviceId->令牌。目前,我正在获取整个手机对象,然后我遍历所有手机ID以获取令牌。这会增加我的数据库下载使用率并增加结算。我只关心所有设备的令牌。令牌的兄弟姐妹是不必要的。

1 个答案:

答案 0 :(得分:1)

对实时数据库的所有查询都会获取所请求位置下的所有内容。没有办法限制该地点下的某些儿童。如果您只想要某个位置的某些孩子,而不是该位置下的所有孩子,则您必须分别查询每个孩子。或者,您可以重新构建或复制数据以支持您要执行的特定查询 - 对于nosql类型数据库,复制很常见。