Javascript Firebase对特定记录的索引进行排序和检索
我用的是Firebase 2.4.2。我的数据库如下:Javascript Firebase对特定记录的索引进行排序和检索,javascript,firebase,firebase-realtime-database,angularfire,nosql,Javascript,Firebase,Firebase Realtime Database,Angularfire,Nosql,我用的是Firebase 2.4.2。我的数据库如下: "items": { "item1": { "details": { "name": "item 1", "rate": 5 }, "item2": { "details": { "name": "item 2", "rate": "4" } } "item3": { "detail
"items": {
"item1": {
"details": {
"name": "item 1",
"rate": 5
},
"item2": {
"details": {
"name": "item 2",
"rate": "4"
}
}
"item3": {
"details": {
"name": "item 3",
"rate": "6"
}
}
}
我有数千个项目,不想将它们全部加载到表中。相反,我希望加载前10名以及用户单击的项目。因此,如果您在以下页面中:/items/details/item2
,我希望您能看到数据库中排名前10的项目(基于它们的费率)以及表中的item2
。我还想显示排序列表中item2
的索引
ind id rate
1 item56 100
2 item33 98
...
143 item2 13
如果带宽没有问题,我们通常会按如下方式检索所有数据(例如,使用AngularFire)
但是,我想对它们进行排序,检索前10名,然后检索item2
(在本例中)及其基于其比率的索引(143
)
我该怎么做
// For getting top 10
var ref = fbutil.ref('items').orderByChild('details/rate').limitToFirst(10);
return $firebaseArray(ref);
// For getting single
var ref = fbutil.ref('items').orderByChild('details/rate').equalTo(13);
var singleItem = $firebaseObject(ref);
签出以下链接以查看类支持的方法
谢谢祖拉,但这并不能回答我的问题。问题不在于获得前10名和某个特定项目。问题是根据其
比率
(基于用于排序前10个项目的相同度量)获取数据库中该特定项目的索引,而不从数据库检索整个数据。明白。我可以知道你为什么想要这个索引吗?你的最终目的是什么?假设你有成千上万的项目。我不想每次有人单击某个项目时都加载它们。相反,我想显示排名靠前的项目加上当前项目基于其比率的排名。
// For getting top 10
var ref = fbutil.ref('items').orderByChild('details/rate').limitToFirst(10);
return $firebaseArray(ref);
// For getting single
var ref = fbutil.ref('items').orderByChild('details/rate').equalTo(13);
var singleItem = $firebaseObject(ref);