javascript – 在Firestore中创建分页的时间顺序查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 在Firestore中创建分页的时间顺序查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1925字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 在Firestore中创建分页的时间顺序查询](/upload/InfoBanner/zyjiaocheng/768/ddfb036b180a4a9b9d9141704c6d4838.jpg)
希望这是一个使用Firestore查询的相对简单的问题
我正在尝试创建一个基本上是新闻源,从最旧的内容中排序最新的内容.那部分很简单,我使用:
var first = db.collection("feeds/0/active").orderBy("timestamp", "desc").limit(3);
它检索新闻源中的3个最新条目.我的想法是在下一个查询中,下拉Feed中的下三个项目.因此,如果我们按年龄计算,那么该系列中有4,5,6个新项目.
为此,我抓住查询一中的最后一项,并使用该节点的时间戳作为我在查询2中的值的起点:
var first = db.collection("feeds/0/active").orderBy("timestamp", "desc").limit(3);
first.get().then(function (documentSnapshots) {
// Get the last visible document
var lastVisible = documentSnapshots.docs[documentSnapshots.docs.length-1];
var next = db.collection("feeds/0/active").orderBy("timestamp", "desc").startAt(lastVisible.data().timestamp).limit(3);
next.get().then(function(docSn){
console.log("SECOND QUERY!")
docSn.forEach(function(doc) {
console.log(doc.data().message)
})
})
尽管尝试告诉第二个查询从node3开始,但此代码的结果返回与第一个查询返回的相同,即节点1,2,3
我也试过传入一个javascript对象:
var datevalue = Date.parse(lastVisible.data().timestamp)
var next = db.collection("feeds/0/active").orderBy("timestamp", "desc").startAt(datevalue).limit(3);
遗憾的是,这也行不通.
我也试过传递整个快照项,并得到了错误
“来自JS的Malforormed Calls:字段大小不同.
[[9,38,38,38],[0,0,1,0],
等等..”
不知道从哪里开始,因为我已经阅读了文档和任何示例,我可以找到并且似乎无法弄明白.我能想到实现这一点的唯一另一种方法是使用Cloud Function在创建时为每个节点编号..但这感觉很糟糕
任何帮助都会很大!谢谢
解决方法:
你在检查返回的整个清单吗?或者,只是第一个节点?
如果使用startAt,则第二个列表中的第一个节点将是第一个列表中的最后一个节点(docs).我建议使用startAfter(docs).
例:
var db = firebase.firestore()
var query = db.collection('feeds/0/active').orderBy('timestamp', 'desc').limit(3)
query.get().then((firstSnapshot) => {
var first3 = snapshot.docs
query.startAfter(first3[2]).get().then((nextSnapshot) => {
var next3 = snapshot.docs
})
})
内容总结
以上是互联网集市为您收集整理的javascript – 在Firestore中创建分页的时间顺序查询全部内容,希望文章能够帮你解决javascript – 在Firestore中创建分页的时间顺序查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。