@unikvs/indexeddb
@unikvs/indexeddb の Indexeddb。IndexedDB に任意の値を保存するストレージの使い方を説明します。
概要
@unikvs/indexeddb ブラウザー専用 は IndexedDB に任意の値を保存するストレージです。構造化複製できる値や Blob・File を保存したい場合に使います。
nameはIndexeddbです。open・closeが必要です。- データベース名とストア名はコンストラクターで指定します。
Blob・Fileは中間形式で保存し、読み戻し時に復元します。
インストールは次のコマンドで行います。
npm install @unikvs/indexeddbpnpm add @unikvs/indexeddbyarn add @unikvs/indexeddbbun add @unikvs/indexeddbnub add @unikvs/indexeddbaube add @unikvs/indexeddb使い方
Indexeddb は IStorage を実装しています。UniKvs には persist() で渡します。
import { Indexeddb } from "@unikvs/indexeddb";
コンストラクターの引数は次のとおりです。
プロパティ型
dbName?string
使うデータベースの名前です。
型
stringデフォルト
"unikvs_db"storeName?string
使うオブジェクトストアの名前です。
型
stringデフォルト
"kvs_store"以下は、値を保存して読み戻す例です。
import { Indexeddb } from "@unikvs/indexeddb";
import * as unikvs from "unikvs";
const kvs = new unikvs.Builder<{
greeting: unikvs.PlainValue<string>;
}>()
.persist(new Indexeddb())
.build();
await kvs.open();
await kvs.set("greeting", "hello");
const value = await kvs.get("greeting");
console.log(value); // "hello"
await kvs.close();
データ型
| 操作 | 対応するデータ型 |
|---|---|
write・read |
任意の値(Blob・File を含みます) |
getWritable・getReadable のチャンク |
Uint8Array |
- 任意の値を保存できます。IndexedDB の構造化複製に対応した値を扱います。
Blob・Fileは中間形式で保存し、読み戻し時に復元します。Fileの名前と更新時刻も保持します。- 存在しないキーに対する
deleteは成功し、existsはfalseを返します。 - ストリームのチャンクは
Uint8Arrayです。 getWritableで取得したストリームは、チャンクを結合し、close時に保存します。getWritableで取得したストリームにUint8Array以外のチャンクを書き込むとInvalidChunkTypeErrorを投げます。getReadableで取得したストリームは、保存値を単一チャンクとして送出します。
エラー
このパッケージが投げるエラーは次のとおりです。
InvalidChunkTypeError
プロパティ型
意味
getWritable で取得したストリームに Uint8Array 以外のチャンクを書き込んだ場合に投げます。
対処方法
ストリームには Uint8Array のチャンクを書き込んでください。
また、見つからないキーを読み取ると NotFoundError の DOMException が投げられ、未オープン時に操作すると TypeError が投げられます。