2016-11-01 10 views
0

REST APIにstartAt(value, [key])の同等物がありますか?特にオプションのキーパラメータ。重複のないプロパティのREST APIによるFirebaseデータのページ

https://www.firebase.com/docs/web/api/query/startat.html

詳細:私はREST APIを使用して、プロパティ(dueDate)にコレクションをページングしています

。ページングスルーは機能しますが、dueDateの値は一意ではないため、連続する各ページに複数の重複が含まれることがあります。最悪の場合、ページサイズよりも重複した日付が重複している可能性があります。

Firebaseのページングの仕組みのため、前のページの最後の項目が1つ重複していると思います。

JS SDKのstartAtメソッドは、次のクエリを作成するときに最後のキーを提供するために2番目の引数をサポートしていますが、これは存在しないか、REST APIには記載されていません。

REST APIドキュメントでは、クエリパラメータの完全な仕様は提供されず、「auth」や「shallow」などのREST固有のパラメータのみが提供されます。 ORDERBY

は、より多くの情報のために注文したデータ上のガイドのセクションを参照してください。

limitToFirst、limitToLast、startAt、ENDAT、equalTo

は、より多くの情報のためのデータを照会する方法のガイドのセクションを参照してください。

ドキュメント:NodeJSでhttps://firebase.google.com/docs/reference/rest/database/#section-query-parameters

要求:

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セクションのすべてを読みました。

答えて

1

Firebaseサポートに対応した後、REST APIがこの時点でstartAt with keyパラメータをサポートしていないことを確認しました。

私たちのデータはユーザが選択した日付なので(重複する可能性があります)、日付を使用してその日時にFirebaseプッシュIDを計算する回避策が出てきました余分なインデックス付きプロパティとページ毎に1つ以上の重複を取得しないように改ページします。

以下の要点には、他の誰かがこれを行う必要がある場合に、他の多くの言語へのポートを持つプッシュIDアルゴリズムが含まれています。

https://gist.github.com/mikelehen/3596a30bd69384624c11

関連する問題