我正在试用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,则该功能似乎已消失。
答案 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