Tyl*_*nis 3 firebase firebase-realtime-database
我有一个Firebase调用,看起来像这样,
ref.child(`floorPosts/${this.props.floorName}`)
.orderByChild('numberOfLikes')
.limitToLast(15)
.once('value', (snapshot) => {
var topPosts = [];
snapshot.forEach((childSnapshot) => {
var post = childSnapshot.val();
post.key = childSnapshot.key();
topPosts.unshift(post);
});
this.lastPostKeyTop = topPosts[topPosts.length - 1].key;
this.setState({
topPosts,
isLoading: false
});
});
Run Code Online (Sandbox Code Playgroud)
现在我要做的是,当用户滚动到页面底部时,我调用了这个函数.
ref.child(`floorPosts/${this.props.floorName}`)
.orderByChild('numberOfLikes')
.startAt(null, this.lastPostKeyTop)
.limitToLast(15)
.once('value', (snapshot) => {
var topPosts = [];
snapshot.forEach((childSnapshot) => {
var post = childSnapshot.val();
post.key = childSnapshot.key();
topPosts.unshift(post);
});
this.setState({
topPosts: this.state.topPosts.concat(topPosts),
isLoading: false,
});
});
Run Code Online (Sandbox Code Playgroud)
然而,它与最初的结果相同,前15个结果相同. .startAt接受第二个参数,(我相信)是从firebase获取的最后一个项目的关键字.但是,这似乎并不适用于我的情况.我有预感它与snapshot.forEach代码有关.
对不起,泰勒的回答令人难以置信
的第二个参数startAt()是仅使用匹配的第一个参数的项目之间的歧义.因此,您必须传入numberOfLikesstart at 的值和第一页上最后一项的键(通常称为锚项).
另请注意,这意味着下一组结果中的第一项将与上一组结果中的最后一项相同.所以你需要检索一个额外的项目.
| 归档时间: |
|
| 查看次数: |
981 次 |
| 最近记录: |