gpt4 book ai didi

javascript - 带分页的 Firebase 过滤器

转载 作者:行者123 更新时间:2023-11-30 20:53:41 25 4
gpt4 key购买 nike

我正在使用 Firebase + Angular 做一个开源 Yelp。

我的数据库:

    {
"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);
});
}

现在,我想做一个服务器端的评论分页,但我想我不能用这种数据库结构来做。我对吗?尝试过:

    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) 我的评论有用户名,所以我想很容易改变它(这就是为什么我有一个非规范化的表)

最佳答案

对于第二页你需要知道两件事:

  1. 您要过滤的商店 ID
  2. 你想开始的评论的关键

您已经有了商店 ID,这很容易。作为开始的键,我们使用上一页最后一项的键,然后只要求额外的一项。最后,您需要使用 start()(可能还需要使用 endAt():

return this.db.list('/reviews', ref => { 
return ref.orderByChild('storeID')
.startAt(storeID, lastKeyOnPreviousPage)
.limitToLast(11)
});

关于javascript - 带分页的 Firebase 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47894835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com