Javascript 带分页的Firebase过滤器
我正在用Firebase+Angular做一个开源Yelp 我的数据库:Javascript 带分页的Firebase过滤器,javascript,firebase,firebase-realtime-database,angularfire2,Javascript,Firebase,Firebase Realtime Database,Angularfire2,我正在用Firebase+Angular做一个开源Yelp 我的数据库: { "reviews" : { "-L0f3Bdjk9aVFtVZYteC" : { "comment" : "my comment", "ownerID" : "Kug2pR1z3LMcZbusqfyNPCqlyHI2", "ownerName" : "MyName", "rating" : 2,
{
"reviews" : {
"-L0f3Bdjk9aVFtVZYteC" : {
"comment" : "my comment",
"ownerID" : "Kug2pR1z3LMcZbusqfyNPCqlyHI2",
"ownerName" : "MyName",
"rating" : 2,
"storeID" : "-L0e8Ua03XFG9k0zPmz-"
},
"-L0f7eUGqenqAPC1liYj" : {
"comment" : "me second comment",
"ownerID" : "Kug2pR1z3LMcZbusqfyNPCqlyHI2",
"ownerName" : "MyName",
"rating" : 3,
"storeID" : "-L0e8Ua03XFG9k0zPmz-"
},
},
"stores" : {
"-L0e8Ua03XFG9k0zPmz-" : {
"description" : "My good Store",
"name" : "GoodStore",
"ownerID" : "39UApyo0HIXmKPrTOi8D0nWLi6n2",
"tags" : [ "good", "health", "cheap" ],
}
},
"users" : {
"39UApyo0HIXmKPrTOi8D0nWLi6n2" : {
"name" : "First User"
},
"Kug2pR1z3LMcZbusqfyNPCqlyHI2" : {
"name" : "MyName",
"reviews" : {
"-L0f3Bdjk9aVFtVZYteC" : true,
"-L0f7eUGqenqAPC1liYj" : true
}
}
}
}
我使用下面的代码获取所有商店的评论(使用AngularFire2)
现在,我想做一个服务器端的回顾分页,但我想我不能用这个数据库结构来做。我说得对吗?尝试:
getReviews(storeID: string){
return this.db.list('/reviews', ref => {
return ref.orderByChild('storeID').equalTo(storeID).limitToLast(10) //How to make pagination without retrive all data?
});
}
我想我可以把所有评论放在商店里,但是(I)我不想在有人要求商店时一次检索所有评论,(ii)我的评论有一个用户名,所以我想很容易更改它(这就是为什么我有一个非规范化的表)对于第二页,你需要知道两件事:
start()
(可能还需要使用endAt()
)来执行以下操作:
return this.db.list('/reviews', ref => {
return ref.orderByChild('storeID')
.startAt(storeID, lastKeyOnPreviousPage)
.limitToLast(11)
});
return this.db.list('/reviews', ref => {
return ref.orderByChild('storeID')
.startAt(storeID, lastKeyOnPreviousPage)
.limitToLast(11)
});