带角火、有序和有限连接的Firebase
我使用的是AngularFire 2.0.2,它使用的是Firebase SDK 3.x。 因为这个版本没有带角火、有序和有限连接的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
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中长轮询的搜索速度如此之快。