【发布时间】:2018-03-28 15:19:29
【问题描述】:
希望这里是一个使用 Firestore 查询的相对简单的问题
我正在尝试创建一个本质上的新闻提要,从最旧的内容中排序最新的内容。这部分很简单,我使用:
var first = db.collection("feeds/0/active").orderBy("timestamp", "desc").limit(3);
检索新闻提要中的 3 个最新条目。我当时的想法是在下一个查询中,拉下提要中的下 3 个项目。因此,如果我们按年龄来计算,就这些项目的新旧程度而言,该系列中有 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)
})
})
此代码的结果与第一个查询返回的结果相同,即节点 1、2、3,尽管试图告诉第二个查询从节点 3 开始
我也尝试过传入一个 javascript 对象:
var datevalue = Date.parse(lastVisible.data().timestamp)
var next = db.collection("feeds/0/active").orderBy("timestamp", "desc").startAt(datevalue).limit(3);
不幸的是,这也不起作用。 我也尝试传入整个快照项,并得到了错误 “来自 JS 的畸形调用:字段大小不同。 [[9,38,38,38],[0,0,1,0], 等等。”
我不知道从哪里开始,因为我已经阅读了文档和任何示例,我可以找到但似乎无法弄清楚。我能想到实现这一点的唯一其他方法是在创建时使用云函数对每个节点进行编号.. 但这感觉很hacky
任何帮助都会很大!谢谢
【问题讨论】:
-
有人知道吗?
-
你解决了吗?我现在也有同样的问题。
标签: javascript firebase google-cloud-firestore