概要
IndexedDB は、HTML5 WEB アプリケーションがユーザーのブラウザ上にデータを保存できるようにする HTML5 WEB データベースです。 IndexedDB は非常に強力で、クライアントの Chrome、IE、Firefox、その他の WEB ブラウザに大量のデータを保存できます。ここでは、IndexedDB の基本概念を簡単に説明します。
IndexedDB とは
HTML5 の新しいデータ ストレージである IndexedDB は、クライアント上でデータを保存および操作できるため、アプリケーションの読み込みが速くなり、応答性が向上します。データ テーブルとレコードがあるという点でリレーショナル データベースとは異なります。それはアプリケーションの設計と作成の方法に影響を与えます。 IndexedDB は、データ型と単純な JavaScript 永続オブジェクトを使用してオブジェクトを作成します。各オブジェクトはインデックスを持つことができるため、コレクション全体のクエリと走査が効率的に行えます。この記事では、Web アプリケーションで IndexedDB を使用する方法の実例を示します。
開始
実行前に次のプリコードを含める必要があります
Open IndexedDB
データベースを作成する前に、まずデータベースのデータを作成する必要があります。
上に示したように、私たちは "databaseName" という名前を付け、バージョン番号のデータベースを指定し、open() メソッドに 2 つのパラメータがあります:
1.最初のパラメータはデータベース名、会議名は「databaseName」のデータベースが存在するかどうか。存在する場合はそれを開き、新しいデータベースを作成します。
2. 2 番目のパラメータは、ユーザーがデータベース構造を更新するために使用されるデータベースのバージョンです。 >onSuccess 処理
成功イベントが発生すると、「onSuccess」がトリガーされ、すべての成功したリクエストがこの処理に存在する場合、データベースの保存リクエストの結果を提供して使用できます。 onerror の処理プログラム
は、データベースを開くプロセス中にエラーが発生した場合に「onerror」が起動されます。
Onupgradeneeded 処理プログラム
データベースの更新 (データベースの作成、削除、または変更) を行う場合は、データベースの構造を変更できるようにするために、アップグレードが必要な処理プログラムを実行する必要があります。 🎜 >
创建和添加数据到表:
indexeddbインデックスは、オブジェクトを保存し、事前に準備したデータをどのように挿入するかを示しています。
JavaScript
コード
createObjectStore() メソッドを使用してオブジェクト ストアを作成します。 このメソッドは、保存された名前とパラメータ オブジェクトの 2 つのパラメータを受け入れます。 ここでは、「users」というオブジェクト ストアがあり、オブジェクトを一意にする属性である keyPath を定義しています。 ここでは、keyPath として「id」を使用します。この値はオブジェクト ストア内で一意であり、この「ID」の属性がオブジェクト ストア内のすべてのオブジェクトに存在することを確認する必要があります。 オブジェクト ストアが作成されたら、for ループを使用してオブジェクト ストアへのデータの追加を開始できます。
テーブルにデータを手動で追加します:
追加のデータをデータベースに手動で追加できます。
テーブルからのデータの読み取り
get() メソッドは、オブジェクト ストレージからデータを取得するために使用されます。 事前にオブジェクトの ID を keyPath として設定しているため、get() メソッドは同じ ID 値を持つオブジェクトを検索します。 次のコードは、「Bidulata」という名前のオブジェクトを返します:
テーブル内のすべてのデータを取得します
の次の方法でテーブル内のすべてのデータを取得します。
オブジェクトから削除されます。
JavaScript
オブジェクトの keyPath をパラメータとして delete() メソッドに渡す必要があります。
最終コード
次のメソッドはオブジェクト ソースからレコードを削除します:
锁
localStorage にはロック機能がありません。フロントエンドのデータ共有を実現するためにロック機能が必要な場合は、インデックス付き DB などの他の格納方式を使用する必要があります。indededDB は、実際にはロック機能です。
このような検索を行うには、indexedDB の接続が難しいため、最初に単一のインデックス付き DB をカプセル化する操作が必要であり、2 つの検索の面では
Replace localStorage with indexedDB transaction processing. But the result is different
During the test, there may not be immediate output in b.html because indexedDB is busy processing a.html things, and the b.html transaction is waiting in the transaction queue. But no matter what, the output result will not be the value 1. Because the smallest processing unit of indexedDB is a transaction, not an expression like localStorage. In this way, you only need to put the things that need to be processed between lock and unlock into a transaction. In addition, browser support for indexedDB is not as good as localStorage, so browser compatibility must be considered when using it.