2021-03-31

IndexedDB(結(jié)構(gòu)化)

nosql類型的數(shù)據(jù)存儲方式

不需要寫sql語句

定義

IndexedDB 是一種底層 API,用于在客戶端存儲大量的結(jié)構(gòu)化數(shù)據(jù)

應(yīng)用場景

客戶端(瀏覽器)

大量的數(shù)據(jù)

結(jié)構(gòu)化數(shù)據(jù)(類似 object對象 有鍵有值)

不是關(guān)系型(通過sql查詢)

存儲位置

瀏覽器中

application中

底層API

操作起來相對復(fù)雜

可選擇第三方工具

IndexedDB API是強(qiáng)大的厅缺,但對于簡單的情況可能看起來太復(fù)雜盒齿。如果你更喜歡一個簡單的API跪但,請嘗試? localForage贩耐、dexie.js洽损、PouchDB蛉幸、idb肖粮、idb-keyval孤页、JsStore 或者 lovefield? 之類的庫,這些庫使 IndexedDB 對開發(fā)者來說更加友好涩馆。

同源策略

正如大多數(shù)的 web 儲存解決方案一樣行施,IndexedDB 也遵守同源策略。因此當(dāng)你在某個域名下操作儲存數(shù)據(jù)的時候魂那,你不能操作其他域名下的數(shù)據(jù)

事務(wù)型數(shù)據(jù)庫系統(tǒng)(ORM)

所有操作 都是通過事務(wù)對象(transaction)進(jìn)行操作

使用

1.打開數(shù)據(jù)庫 -> IDBRequest(請求對象)

open

IDBFactory.open 方法用于打開一個數(shù)據(jù)庫連接蛾号。本方法立即返回一個 IDBOpenDBRequest 對象,但打開數(shù)據(jù)庫的操作是異步執(zhí)行的

連接數(shù)據(jù)庫在一個單獨(dú)的線程中進(jìn)行涯雅,包括以下幾個步驟

指定數(shù)據(jù)庫已經(jīng)存在時:

等待 versionchange 操作完成鲜结。

如果數(shù)據(jù)庫已計(jì)劃刪除,那等著刪除完成活逆。

如果已有數(shù)據(jù)庫版本高于給定的 version精刷,中止操作并返回類型為 VersionError 的 DOMError 。

如果已有數(shù)據(jù)庫版本低于給定的 version蔗候,觸發(fā)一個 versionchange 操作怒允。

如果數(shù)據(jù)庫不存在,創(chuàng)建指定名稱的數(shù)據(jù)庫锈遥,將版本號設(shè)置為給定版本纫事,如果給定版本號,則設(shè)置為1所灸,and no object stores.

創(chuàng)建數(shù)據(jù)庫連接丽惶。

2.獲得數(shù)據(jù)庫對象

監(jiān)聽事件獲得(注意 打開數(shù)據(jù)庫是異步)

IDBRequest->result屬性 數(shù)據(jù)庫對象

upgradeneeded

檢測到有新版本的時候觸發(fā)

第一次打開數(shù)據(jù)庫(如果沒有數(shù)據(jù)庫->新建數(shù)據(jù)庫(也可以有多個數(shù)據(jù)庫))

建ObjectStore(DB.createObjectStore("user",{keyPath:"有唯一值的index"});)

建index(os.createIndex("鍵名","鍵路徑",可選項(xiàng));)

建index

建index

建ObjectStore(note)

建index(title)

建index(createTime)

建index(content)

success

每一次打開都會調(diào)用

error

3.通過數(shù)據(jù)庫對象獲得事務(wù)對象(db.tansaction())

增刪改查

1.獲取事務(wù)對象

指定權(quán)限

2.獲取你要操作的OS(objecctStore)

3.增刪改查

添加數(shù)據(jù)add()

? ? ? ? let ts = DB.transaction(["hero"],"readwrite");

? ? ? ? let os = ts.objectStore("hero");

? ? ? ? //會返回一個IDBRequest

? ? ? ? let request = os.add(data);

? ? ? ? request.onsuccess = ()=>{

? ? ? ? ? ? console.log("添加數(shù)據(jù)成功")

? ? ? ? ? ? loadAll();

? ? ? ? }

? ? ? ? request.onerror = err=>{console.warn(err)}

查詢數(shù)據(jù)

getAll 查詢所有數(shù)據(jù)(ie不支持)

? ? ? ? let os = DB.transaction(["hero"],"readwrite").objectStore("hero");

? ? ? ? let request = os.getAll();

? ? ? ? request.onsuccess = function (){

? ? ? ? ? ? console.log(this.result);

? ?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末爬立,一起剝皮案震驚了整個濱河市钾唬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌懦尝,老刑警劉巖知纷,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壤圃,死亡現(xiàn)場離奇詭異陵霉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)伍绳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門踊挠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事效床《米茫” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵剩檀,是天一觀的道長憋沿。 經(jīng)常有香客問我,道長沪猴,這世上最難降的妖魔是什么辐啄? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮运嗜,結(jié)果婚禮上壶辜,老公的妹妹穿的比我還像新娘。我一直安慰自己担租,他們只是感情好砸民,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奋救,像睡著了一般岭参。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上菠镇,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天冗荸,我揣著相機(jī)與錄音,去河邊找鬼利耍。 笑死蚌本,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的隘梨。 我是一名探鬼主播程癌,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼轴猎!你這毒婦竟也來了嵌莉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤捻脖,失蹤者是張志新(化名)和其女友劉穎锐峭,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體可婶,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沿癞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了矛渴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片椎扬。...
    茶點(diǎn)故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蚕涤,到底是詐尸還是另有隱情筐赔,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布揖铜,位于F島的核電站茴丰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏天吓。R本人自食惡果不足惜较沪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望失仁。 院中可真熱鬧尸曼,春花似錦、人聲如沸萄焦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拂封。三九已至茬射,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間冒签,已是汗流浹背在抛。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留萧恕,地道東北人刚梭。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像票唆,于是被迫代替她去往敵國和親朴读。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容

  • IndexedDB(結(jié)構(gòu)化) nosql類型的數(shù)據(jù)存儲方式 不需要寫sql語句 定義 IndexedDB 是一種底...
    青冘1114閱讀 226評論 0 0
  • IndexedDB(結(jié)構(gòu)化) nosql類型的數(shù)據(jù)存儲方式 不需要寫sql語句 定義 IndexedDB 是一種底...
    Rikka丶閱讀 254評論 0 0
  • 通過數(shù)據(jù)庫對象獲得事務(wù)對象(db.tansaction()) 增刪改查 1.獲取事務(wù)對象 指定權(quán)限 2.獲...
    舊時夢_d22e閱讀 55評論 0 1
  • nosql類型的數(shù)據(jù)存儲方式 不需要寫sql語句 定義 IndexedDB 是一種底層 API走趋,用于在客戶端存儲大...
    言術(shù)閱讀 444評論 0 0
  • IndexedDB(結(jié)構(gòu)化) nosql類型的數(shù)據(jù)存儲方式 不需要寫sql語句 定義 IndexedDB 是一種底...
    云囍閱讀 1,593評論 0 0