Javascript firebase获取子节点的列表
我的firebase上有以下结构Javascript firebase获取子节点的列表,javascript,angularjs,ionic,firebase,angularfire,Javascript,Angularjs,Ionic,Firebase,Angularfire,我的firebase上有以下结构 "users" : { "06f0536d-2326-43a0-81db-9e94acc77b4e" : { "address" : "xxxxxxxxxxxxx", "displayName" : "xxxxxxx", "email" : "xxx@xxx.com", "fleet" : { "-K6iGFIu5Jwu_AmWWDTL" : { "avafrom" : 1451343600000, "avaunt
"users" : {
"06f0536d-2326-43a0-81db-9e94acc77b4e" : {
"address" : "xxxxxxxxxxxxx",
"displayName" : "xxxxxxx",
"email" : "xxx@xxx.com",
"fleet" : {
"-K6iGFIu5Jwu_AmWWDTL" : {
"avafrom" : 1451343600000,
"avauntil" : 1454540400000,
"brands" : "xxxxxxxxxx",
"desc" : "xxxxxxxxxxxx",
"dmile" : 5,
"drate" : 22,
},
"-K6iGUY6Y19PExwBklal" : {
"avafrom" : 1451516400000,
"avauntil" : 1454540400000,
"brands" : "xxxxx",
"desc" : "xxxxxxxxxxxxx",
"dmile" : 5,
"drate" : 12,
}
},
"phone" : "+49xxxxxxx",
"role" : "xxxxxxxxxxx"
},
"22dbc365-3201-4bc0-9f19-2a8a64bea235" : {
"address" : "xxxxxxxxxxx",
"displayName" : "xxxx",
"email" : "xxxx@xxxx.com",
"fleet" : {
"-K6ge_Y4enb_a13O1eCu" : {
"avafrom" : 1451343600000,
"avauntil" : 1451516400000,
"brands" : "xxxxxxxxxxx",
"desc" : "xxxxxxxxxxxxx",
"dmile" : 1,
"drate" : 22,
},
"-K6gexE9KXd3WGBnjIY8" : {
"avafrom" : 1451343600000,
"avauntil" : 1451516400000,
"brands" : "xxxxxxxxxx",
"desc" : "xxxxxxxxxxxxxx",
"dmile" : 1,
"drate" : 22,
}
},
"phone" : "+49xxxxxx",
"role" : "xxxxxxx"
},
<pre>{{ fleet | json ||</pre>
以及如何使用此工具获取所有用户的车队列表?我尝试了以下方法:
var ref = new Firebase(fb+'users');
return {
fleet: function(){
ref.orderByChild("fleet").on("child_added", function(snapshot) {
console.log("data trucks", snapshot.val());
return snapshot.val();
})
}
}
但我最终得到了所有用户的数据,不仅仅是他们的车队。我甚至不确定我是否做得对,我试图在这里建立一对多的关系,每个用户都可以拥有一个车队,其中包括一个汽车列表。我是Firebase的新手,英语不是我的母语,所以我不太理解他们的文档,我想如果有人能给我举个例子,这将是一个很大的帮助
任何帮助都将不胜感激,提前感谢如果您只需要
车队
节点,您需要重新构建数据结构。当您从父节点读取数据时,也将获得所有子节点
您可以为fleet
关闭uid
,下面是一个示例:
{
"users": {
"06f0536d-2326-43a0-81db-9e94acc77b4e" : {
"address" : "xxxxxxxxxxxxx",
"displayName" : "xxxxxxx",
"email" : "xxx@xxx.com"
}
},
"fleet": {
"06f0536d-2326-43a0-81db-9e94acc77b4e" : {
"-K6ge_Y4enb_a13O1eCu" : {
"avafrom" : 1451343600000,
"avauntil" : 1451516400000,
"brands" : "xxxxxxxxxxx",
"desc" : "xxxxxxxxxxxxx",
"dmile" : 1,
"drate" : 22
}
}
}
}
您也不能从异步函数返回
ref.orderByChild("fleet").on("child_added", function(snapshot) {
return snapshot.val(); // won't work
})
数据必须通过网络下载,因此不会同步发生
您可以传入回调:
function FleetFactory() {
var ref = new Firebase(fb+'users');
return {
fleet: function(callback){
ref.orderByChild("fleet").on("child_added", callback);
}
}
}
function MyController(FleetFactory) {
FleetFactory.fleet(function(snap) {
console.log(snap.val());
});
}
但是,这仍然不是你理想的情况
angular.module('app', ['firebase'])
.constant('FirebaseUrl', '<my-firebase-app>')
.service('rootRef', ['FirebaseUrl', Firebase])
.controller('MyCtrl', MyController);
function MyController($scope, rootRef, $firebaseArray) {
$scope.fleet = $firebaseArray(rootRef.child('fleet'));
}
谢谢你的回复,我已经尝试过回调方法,但它仍然会给我用户树的所有对象,我只需要从所有用户那里获取车队列表,而不是从用户那里获取所有数据。对于第二种方法,使用我的控制器中的数组,它返回一个空数组,可能是因为每个车队项目的唯一id?似乎无法从fleet中找到子节点谢谢,我能够获得所有用户群的列表,但我如何显示例如“displayName”拥有的这个群,目前我正在使用ng repeat=“item in fleet”迭代群数组,但我对如何从其他节点获取群所有权数据感到困惑。