HTML5で使えるデータベースのIndexed DBの使い方のメモです。
2016年1月現在のAPIです。
現段階では準拠なので、正式決定の際に変更の場合があります。
APIが変更になったら、使えない場合があるので、確認してください。
まず始めに、データベースの名前を変数に入れます。
var dbName = "databasename";
次に、データベースのバージョンを整数で変数に入れます。
var dbVersion = 1;
小数点を入れると、動きません。
次にブラウザーが違う場合でも動くように
var indexedDB = window.indexedDB || window.webkitindexedDB || window.mozIndexedDB;
と、indexedDBの変数を作ります。
この三つが必要となる変数です。
では、Indexed DBに接続しましょう。
接続には、indexedDB.open(データベースの名前,データベースのバージョン)となります。
今回の例の場合は、
indexedDB.open(dbName,dbVersion)で開きます。
これを変数に入れます。
var request = indexedDB.open(dbName,dbVersion);
読者の中で、疑問に思う方もいるでしょう。
「え?データベース作ってないのに、接続すんの?」
はい、そうなんです。
無くても接続なんです。
ここが、第一関門。
request.onupgradeneeded()で、データベースを作成します。
これの理屈はこうです。
データベースが無い場合はバージョン0と認識されます。
また、もしデータベースが存在して、そのバージョンがdbVersionより小さい場合は、データベースのアップグレードが行われます。
では、データベースの中を作っていきましょう。
Indexed DBはMongo DBのようなモノです。
テーブルはありませんが、テーブルの変わりに、ObjestStoreというモノを作ります。
ObjectStoreは連想配列です。
createObjectStore()で、ObjectStoreを作ります。
createObjectStore("ObjectStore名",{keyPath:"keypathname"})
最初の引数は、ObjectStoreの名前、関係DBでいうテーブル名です。
その次の引数は、連想配列になります。Keyはkeypath(プライマリーキーみたいなモノ)、ValueはkeyPathの名前になります。
そして、ObjectStoreの中にcreateIndex()でIndexを作り、各Indexがデータフィールドとなります。
createIndex("インデックス","インデックスキーパス",{unique:false})は最低二つの引数を必要とします。最後の{unique:false}はオプションです。{unique:true}とすると、同じデータが入らなくなります。
request.onupgradeneeded() = function(event){
var db = event.target.result;
var objectStore = db.createObjectStore("objectstorename",{keyPath:"key"})
objectStore.createIndex("firstIndex","firstIndexKeyPath");
}
これで、データベースが出来ました。
次の記事でデータベースにデータの入れ方を書きます。
0 件のコメント:
コメントを投稿