【问题标题】:firebase query based on child prop value and get path基于子道具值的firebase查询并获取路径
【发布时间】:2016-12-08 11:14:30
【问题描述】:

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

这是我尝试过的

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

});

【问题讨论】:

    标签: json firebase firebase-realtime-database angularfire


    【解决方案1】:

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

    snapshot.ref().toString();
    

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

    【讨论】:

    • 这可以获取基本路径,但我需要完整路径,包括动态键 firebase crates
    • 我也需要这个,请问如何获取完整路径?
    【解决方案2】:

    您添加的数据不符合 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"
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      你可以在这里找到整个路径作为一个数组:

      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"
      

      【讨论】:

        猜你喜欢
        • 2020-11-10
        • 1970-01-01
        • 2019-11-28
        • 1970-01-01
        • 2015-10-14
        • 1970-01-01
        • 1970-01-01
        • 2016-01-10
        • 1970-01-01
        相关资源
        最近更新 更多