2017-08-01 3 views
0

Dexie noobはここにあります。私はDexie.jsを使用してIndexedDBからデータを取得しようとしています。私はバッチでデータを取得したい(ページネーションと思う)、最初のクエリだけが動作しているようです。ここでオフセットとリミットが定義されている場合、Dexieのクエリは何も返しません。

はデータです:

db.friends 
.orderBy('age') 
.limit(2) 
.offset(0) 
.toArray() 
.then(function(result) { 
    // Works as expected! 
}); 

とクエリ#2空[]を返します:

db.friends.bulkAdd([ 
    {name: "David", age: 42}, 
    {name: "Neil", age: 37}, 
    {name: "Freddie", age: 36}, 
    {name: "Elvis", age: 56}, 
    {name: "Calvin", age: 22}, 
]); 

そしてここでは、クエリ#1です

db.friends 
.orderBy('age') 
.limit(2) 
.offset(2) 
.toArray() 
.then(function(result) { 
    // result is [] 
}); 

私はlimit(2)のままにした場合クエリ#2からクエリは期待通りに機能しますが、offset()と一緒には動作していないようです。

私はここで間違っていますか?私はおそらく、DexieやIndexedDBの仕組みに非常に基本的なものを見逃していますが、誰かが私を助けることができますか?

これは、これをテストするためにa JSFiddleです。

答えて

0

jsfiddleさんありがとうございます。私はそれを読んだときに私が最初は奇妙であることに気づくことができます。それから、理由はoffset()とlimit()の順であることに気付きました。あなたのサンプルではoffset()の前にlimit()を使用しています。これは基本的には以下を意味します。

  1. 結果を2つに限定してください。
  2. 2つのアイテムのコレクションからオフセットを2に設定すると、結果はゼロになります。

解決策は、限界とオフセットオフセットの順番を最初に切り替えてから、そのコレクションに制限を適用することです。

+0

Davidさんに感謝して、問題を解決してください!私はコードに何か単純な間違いがあったと確信していましたが、私はそれがこの単純だとは思わなかった:) – ckdaw

関連する問題