コンテンツにスキップ
UniKVS
Esc
↑↓移動↵開く⌘Jプレビュー
このページの内容

@unikvs/indexeddb

@unikvs/indexeddb の Indexeddb。IndexedDB に任意の値を保存するストレージの使い方を説明します。

概要

@unikvs/indexeddb ブラウザー専用 は IndexedDB に任意の値を保存するストレージです。構造化複製できる値や Blob・File を保存したい場合に使います。

  • name は Indexeddb です。
  • open・close が必要です。
  • データベース名とストア名はコンストラクターで指定します。
  • Blob・File は中間形式で保存し、読み戻し時に復元します。

インストールは次のコマンドで行います。

npm install @unikvs/indexeddb
pnpm add @unikvs/indexeddb
yarn add @unikvs/indexeddb
bun add @unikvs/indexeddb
nub add @unikvs/indexeddb
aube 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

プロパティ型
keystring

操作対象のキーです。

型string
chunkunknown

受け取ったチャンクの値です。

型unknown
chunkTypestring

受け取ったチャンクの型名です。

型string

意味

getWritable で取得したストリームに Uint8Array 以外のチャンクを書き込んだ場合に投げます。

対処方法

ストリームには Uint8Array のチャンクを書き込んでください。

また、見つからないキーを読み取ると NotFoundError の DOMException が投げられ、未オープン時に操作すると TypeError が投げられます。

このページは役に立ちましたか?