Firebase(2016)浅层查询

时间:2016-05-21 17:10:59

标签: javascript firebase firebase-realtime-database

我正在试用Firebase(自Google发布以来)。

在Firebase的原始版本中,参数shallow=true将为所请求的树/分支的根目录中的每个{ key: true }返回一个key的对象(因此,而不是孩子们被退回,你只会知道孩子存在的事实。这很有用,因为您不一定需要来自子节点的所有数据(特别是如果有很多数据)。

有没有办法通过Google的新版Firebase实现这一目标?我想的是:

firebase.database().ref('/data/?shallow=true').once('value', function(snapshot) {
  // do something with snapshot
}

上述代码的snapshot.val()返回null,如果我正确地阅读the docs,则该功能似乎已消失。

2 个答案:

答案 0 :(得分:27)

Firebase Database 2.x中的?shallow=true参数仅在REST API中可用。请参阅https://www.firebase.com/docs/rest/guide/retrieving-data.html#section-rest-uri-params

在新的Firebase Database 3.x中,相同的参数仍然只能在REST API中使用。见https://firebase.google.com/docs/database/rest/retrieve-data#shallow

您正在使用Firebase SDK(来自它的外观的JavaScript),它从不支持此参数。

有关过去曾讨论此问题的更多问题,请参阅:

答案 1 :(得分:0)

根据弗兰克的回答,这对我有用:

import request from 'request';

request({ url: "https://[YOUR-APP-ID].firebaseio.com/path/to/data/.json?shallow=true" }, (error, response, body) => {
    const shallowData = JSON.parse(body);
    console.log(shallowData);
});

参考:https://firebase.google.com/docs/database/rest/retrieve-data#shallow