Webブラウザだけでデータを保存しておくための手段は複数あります。保存できるデータの種類、サイズが異なりますがCookie/localStorage/IndexedDBなど必要に応じて使い分けますが、使い方も異なるのが面倒です。 そこで使ってみたいのがIronDBです。異なる保存法を同じインタフェースで使えるようにします。

IronDBの使い方

導入はインポートするだけで簡単です。

import { IronDB } from 'iron-db'

データのセット法です。IndexedDBも利用できる関係上、非同期になります。

await IronDB.set('key', 'value')

データを取り出す場合。defaultはオプションです。こちらも非同期になります。

const value = await IronDB.get('key', default=null)

保存先を指定する場合です。通常では気にすることはありませんが、Service Workerでも使うとなると IndexedDB を指定する必要があるでしょう。

import { IronStorage, CookieStore, LocalStorageStore } from 'iron-db'

const stores = [new CookieStore(), new LocalStorageStore()]
const db = IronStorage(stores)

await db.set('key', JSON.Stringify({1:1}))

IronDBを使うことで多数あるデータ保存先に対して透過的に利用できます。使い方が同じであれば迷うこともありません。Cookie用のライブラリ、IndexedDB用のライブラリなど異なるソフトウェアをいちいち用意する必要もないので手軽です。データは基本的にKVSとして保存されるので、IndexedDBらしい使い方はできないようです。

IronDBはJavaScript製のオープンソース・ソフトウェア(MIT License)です。

gruns/irondb: A relentless key-value store for the browser.