firebase查询基于子prop值和获取路径

时间:2016-08-02 22:41:19

标签: json firebase firebase-realtime-database angularfire

我是firebase的新手,想要传递子属性的值,查询我的整个数据库并获取数据所在的路径。数据嵌套在几个级别,例如我想通过dcid查询并返回它返回的路径。我尝试了一些事情而没有骰子。我怎么能用firebase做到这一点? enter image description here

以下是我尝试的内容

$scope.ref = new Firebase(url);
$scope.ref.orderByChild("num").equalTo(dcid).on("value", function(snapshot) {
  console.log(snapshot.key(), snapshot.val());

});

3 个答案:

答案 0 :(得分:0)

您可以使用它来获取您引用的路径:

snapshot.ref().toString();

检查您是否正在查看树的正确分支可能很有用。希望这会有所帮助。

答案 1 :(得分:0)

您添加的数据不符合Firebase结构...

没有数组,只有对象。

使用orderByChild时,firebase将在您调用方法的引用的子位置中查找键。

前者

new Firebase('<your-project-url>').child('items').orderByChild('prop1').equalTo('value13')
    .on('value', function (snapshot) {
        console.log(snapshot.ref().toString(), snapshot.val());
    })

{
    "items": {
        "item1: {
            "prop1": "value11",
            "prop2": "value21"
        },
        "item2: {
            "prop1": "value12",
            "prop2": "value22"
        },
        "item3: {
            "prop1": "value13", // <----- The query will find this field
            "prop2": "value23"
        }
    }
}

答案 2 :(得分:0)

您可以在此处以数组的形式找到整个路径:

snapshot.query.EP.path.segments

这是一个包含路径每一步的数组。所以如果实际路径是例如foo/bar/baz,这将显示为["foo","bar","baz"],显然你可以用

读出
snapshot.query.EP.path.segments[0] //"foo"
snapshot.query.EP.path.segments[1] //"bar"
snapshot.query.EP.path.segments[2] //"baz"