Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带角火、有序和有限连接的Firebase_Firebase_Firebase Realtime Database_Angularfire - Fatal编程技术网

带角火、有序和有限连接的Firebase

带角火、有序和有限连接的Firebase,firebase,firebase-realtime-database,angularfire,Firebase,Firebase Realtime Database,Angularfire,我使用的是AngularFire 2.0.2,它使用的是Firebase SDK 3.x。 因为这个版本没有fire-utils,所以我尝试手动创建一个规范化的集合(特别是一个有序和有限的联接) 我有一个这样的结构: users: { user_1: { name:..., groups: { group_1: true, group_2: true, ... } }, ... }, groups: { group_1

我使用的是AngularFire 2.0.2,它使用的是Firebase SDK 3.x。 因为这个版本没有
fire-utils
,所以我尝试手动创建一个规范化的集合(特别是一个有序和有限的联接)

我有一个这样的结构:

users: {
  user_1: {
    name:...,
    groups: {
      group_1: true,
      group_2: true,
      ...
    }
  },
  ...
},

groups: {
  group_1: {
    group_name: ...,
    last_edited: servertimestamp
  },
  group_2: {
    group_name: ...,
    last_edited: servertimestamp
  }, 
  ...
}
我想按
last\u edited
timestamp获取用户订购的前10组


最好的方法是什么?谢谢大家!

我不确定这是不是最好的方法,但当我最近不得不这么做时,我就是这么做的。(我在这里解包了匿名函数,因为我发现它们有时会混淆东西)

首先,查找您的用户:

user = $firebaseObject( firebase.database().ref().child('users').child(username) );
然后使用AngularFire$loaded方法检查加载的时间,并告诉它下一步要做什么:

user .$loaded().then( lookupGroups );
然后创建一个名为lookupGroups的函数来执行下一次查找。这将生成一个空数组,然后使用angular.forEach在所有组上循环

function lookupGroups (){
    $scope.groups= [];
    angular.forEach(user.groups, getGroupData);
}
然后编写最终的getGroupData函数,该函数获取groupid,查找并将组数据添加到组数组中

function getArkData(key, value){
    grouppath = firebase.database().ref().child('groups').child(value)
    groupData = $firebaseObject( grouppath  );
    $scope.groups.push( groupData );
}
然后,您就可以在前端使用$scope.groups数组


正如我所说,可能有更好的方法(我很想看看是否有人有更好的方法),但这似乎对我很有效。

我在这里看到的问题是,当你有数千个群组时,你需要所有的群组。但最终的想法是根据小组数据只得到10个结果。谢谢你的回答,西蒙!我同意你的看法,而且我对nosql和长轮询一直持怀疑态度,但你可能会惊讶于Firebase中长轮询的搜索速度如此之快。