我是firebase的新手,想要传递子属性的值,查询我的整个数据库并获取数据所在的路径。数据嵌套在几个级别,例如我想通过dcid查询并返回它返回的路径。我尝试了一些事情而没有骰子。我怎么能用firebase做到这一点?
以下是我尝试的内容
$scope.ref = new Firebase(url);
$scope.ref.orderByChild("num").equalTo(dcid).on("value", function(snapshot) {
console.log(snapshot.key(), snapshot.val());
});
答案 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"