indexedDB
这两天在学习indexDB这个API
先将一些踩到的坑记录一下:一是用indexedDB.open()方法打开数据库返回一个请求对象(IDBOpenRequest),创建数据仓库要写在请求对象上的onupgradeneeded事件回调函数中。用数据库实例对象(IDBDatabase)上的方法(createObjectStore())创建对象仓库。我踩的第一个坑就是跑到成功(onsuccess)的回调中去创建对象仓库,结果是一直报错。二是要在成功的回调中才能添加数据。
分清楚以下五个对象的关系:
1、IDBOpenDBRequest 该对象下有属性result 指向 IDBDatabase
2、IDBDatabase 该对象下的方法 transaction() 生成 IDBTransaction
3、IDBTransaction 该对象下有属性 db 指向 IDBDatabase ,有objectStore()方法生成 IDBObjectStore 对象
4、IDBObjectStore 该对象下有属性 transaction 指向 IDBTransaction ,调用add()、get()、等方法返回 IDBRequest 对象
5、IDBRequest 该对象下有transaction属性指向IDBTransaction,有source属性指向 IDBObjectStore ,有事件onsuccess,事件对象下的target.result 返回 与调用方法相关的数据。
以下是最简单的一段往数据库中添加数据的代码:
var request = window.indexedDB.open('bbb',1); request.onupgradeneeded = function(ev){ var db = ev.target.result; db.createObjectStore('b1'); } request.onsuccess = function(ev){ var db = ev.target.result; var store = db.transaction('b1','readwrite'); store.objectStore('b1').add({b:123},1); }
运行之后:生成一个bbb数据库,库中有一个b1对象仓库,仓库中有一个数据键名为1,值是{b:123};
了解各对象的属性方法请参考:http://javascript.ruanyifeng.com/bom/indexeddb.html
浙公网安备 33010602011771号