我使用firebase firestore使用Rest API来获取仅限5个文档的数据,由一个名为LikesCount
的字段订购。当我想获取接下来的5个文档时,我必须使用startAt
并传递前5个文档中最后一个文档的LikesCount
值。但是通过这种方式,当有另一个具有相同LikesCount
值的文档时,它会获取错误的数据,所以我尝试并搜索了很多关于如何传递最后一个文档id以及LikesCount
值的信息,但所有这些都不起作用。此外,我使用Web SDK测试了分页,并且工作正常,因为您可以轻松地传递文档快照,但是文档快照对象包括什么?这样我们就可以理解Cursor
的结构,并将其应用于REST API。
我试图使用这个方法来传递文档ID作为referenceValue
{
"structuredQuery": {
"from": [{
"collectionId": "Users"
}],
"where": {
"compositeFilter": {
"op": "AND",
"filters": []
}
},
"orderBy": [{
"field": {
"fieldPath": "LikesCount"
},
"direction": "DESCENDING"
}],
"startAt":
{ "values": [
{
"integerValue": "6"
},
{
"referenceValue": "projects/myprojectid/databases/(default)/documents/Posts/xEvmJ1LLHwTKVREQfXtX"
}
],
"before": false
},
"limit":5
}
}
但是会出现错误:游标有太多的值
也,我试图只传递referenceValue
,它仍然没有返回正确的5个文档。提前感谢:)
您的orderBy()
有1个字段(LikesCount
),但您的startAt()
有2个字段。我怀疑这就是错误消息的原因?
传递integerValue
将不起作用。如果有13个值为6
的结果,那么每次进行上述调用时,您将获得相同的前5个结果。
当你说:
我只尝试通过
referenceValue
,但仍然没有得到正确的5个文件
你在拿什么文件?你希望拿到什么文件?