Indexed Database APIを使いやすくするためのライブラリ KageDB その5 - フェッチ

KageDB の紹介です。バージョンはちょこちょこ上げていて、今は0.0.3です。

今回は、フェッチについて書きます。


前回、カーソルについて紹介しましたが、カーソルは1件1件取得する処理なので、全件取得するには次のようなコードが必要です。

myDB.tx(["person"], function (tx, person) {
    var results = [];
    // personから全件取得
    person.openCursor(function (cursor) { 
       if (cursor) {
           results.push(cursor.value);
           cursor.next(); // cursor.nextはcursor.continueのエイリアス
       } else {
           console.log("done: " + JSON.stringify(results));
       }
    });
});


まあ、たいしたことないですがちょっと面倒ですね。KageDBでは、fetchというメソッドを用意していて、次のように書けるようにしています。カーソルのショートカットのようなものと考えてもらえればいいでしょう。

myDB.tx(["person"], function (tx, person) {
    // personから全件取得
    person.fetch(function (results) { 
         console.log("done: " + JSON.stringify(results));
    });
});

keyRangeやdirectionと組み合わせて使うこともできます。

// personからキーが30以上のものを昇順で取得
person.fetch({ge: 30}, function (results) {
   ...
});
// personからキーが30以上のものを降順で取得
person.fetch({ge: 30}, "prev", function (results) {
   ...
});