【发布时间】:2017-03-14 23:21:56
【问题描述】:
在 REST API 中是否有 startAt(value, [key]) 的等价物?特别是可选的键参数。
https://www.firebase.com/docs/web/api/query/startat.html
详情:
我正在使用 REST API 对属性 (dueDate) 上的集合进行分页。对作品进行分页,但由于dueDate 的值不是唯一的,因此每个连续页面可能包含多个重复项。在最坏的情况下,某个日期的重复项可能比页面大小多,这会破坏分页。
由于 Firebase 分页工作的方式,我预计会有 1 个重复项,即上一页的最后一项。
JS SDK startAt 方法支持第二个参数,以在进行下一个查询时提供最后一个键,但这似乎不存在,或者没有记录在 REST API 中。
很遗憾,REST API 文档没有提供查询参数的完整规范,只提供了 REST 特定的参数,例如“auth”和“shallow”。
按顺序
有关详细信息,请参阅指南中有关有序数据的部分。
limitToFirst、limitToLast、startAt、endAt、equalTo
有关更多信息,请参阅指南中有关查询数据的部分。
文档:https://firebase.google.com/docs/reference/rest/database/#section-query-parameters
NodeJS 中的请求:
var request = require('request-promise');
var startAt = 0
var now = new Date().getTime(); // calculate once per paginated query
getPage(startAt, now)
// then process page
// then get the next page
// etc
function getPage(startAt, endAt, lastId) {
var params = {
auth: /* ... auth token ... */,
orderBy: '"dueDate"',
startAt: startDate, /* startDate is a Unix timestamp in milliseconds */
endAt: endAt,
limitToFirst: 1000
};
return request.get({
url: 'https://my-firebase.firebaseio.com/todos.json',
qs: params,
json: true,
timeout: 20000 /* ms */
});
}
我看过Firebase REST API: How to fetch data by priority like startAt/endAt in JS?。较新的答案是指旧文档,如上所述,除非我错过了什么,否则不要回答这个问题。我已阅读旧文档和新文档页面中 REST 部分的所有内容。
【问题讨论】:
标签: rest firebase pagination firebase-realtime-database