亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

IndexedBD的一些心得(總結)

2024-04-27 15:17:57
字體:
來源:轉載
供稿:網友

IndexedBD的一些心得

教程推薦

HTML5本地存儲——IndexedDB(一:基本使用) html5 web IndexedDB使用詳解前端的數據庫:IndexedDB入門MDN使用 IndexedDB

心得

IDB的異步特性

當你嘗試從result里面想獲取出數據并且另外賦值,請記住,IDB是一個異步asyn的數據交互方式,你每次處理都要在一個回執里面進行才行。 錯誤示范:

var transaction = db.transaction('myQuestionaire','readwrite');var store = transaction.objectStore('myQuestionaire');var IDB = store.get(that.requestInfo);

正確示范:

var transaction = db.transaction('myQuestionaire','readwrite');var store = transaction.objectStore('myQuestionaire');var request = store.get(that.requestInfo);request.onsuccess = function(){ console.log(request.result)//完全可以訪問,還能操作}

嘗試讀取數據時候報錯

Uncaught InvalidStateError: Failed to read the ‘result’ PRoperty from ‘IDBRequest’: The request has not finished

參考原文

這個時候你可能沒懂各個教程里面的各種var聲明,一定要注意作用域的問題。

You need to learn about how to write asynchronous javascript. Your db variable isn’t defined at the time you access it.

錯誤示范:

var r = indexedDB.open();var db = null;r.onsuccess = function(event) { db = event.target.result); }

正確示范:

var r = indexedDB.open();r.onsuccess = function(event) { var db = event.target.result;};

that means db isn’t available outside the scope of the onsuccess function. Stop trying to use it outside its scope or you will just run into the problem you are experiencing.

Put的時候報錯

failed to execute ‘put’ on ‘idbobjectstore’ evaluating the object store’s key path did not yield a value

參考原文

儲存數據的時候必須要帶上object store的key一起儲存,或者使用一個key generator({autoIncrement: true}) 例如:

var store = db.createObjectStore('my_store', {keyPath: 'key'});store.put({key: 11, value: 33}); // OKstore.put({value: 66}); // throws, since 'key' is not presentvar store = db.createObjectStore('my_store', {keyPath: 'key', autoIncrement: true});store.put({key: 11, value: 33}); // OK, key generator set to 11store.put({value: 66}); // OK, will have auto-generated key 12

執行transaction時報錯

Uncaught InvalidStateError: Failed to execute ‘transaction’ on ‘IDBDatabase’: A version change transaction is running

參考原文

The versionchange transaction also allows you to readwrite. You just need to access the transaction created for you within the onupgradeneeded function.

function go() { var req = indexeddb.open(...); req.onupgradeneeded = function(event) { var db = event.target.result; var os = ... var transaction = event.target.transaction;// the important part var addRequest = transaction.objectStore('').index('').add('value'); addRequest.onsuccess = function() {console.log('Success!');}; };}

You are encountering the error because you are trying to start a second transaction while the version change transaction is still running.

這個時候聯系到的知識點就時versionchange,這種狀態的改變在IDB里面要放到打開數據庫的回執的onupgradeneeded函數里面。針對onunpgradeneeded的介紹,摘抄了百度知道里面一個回答,看了就懂了。

IDBOpenDBRequest還有一個類似回調函數句柄——onupgradeneeded。 該句柄在我們請求打開的數據庫的版本號和已經存在的數據庫版本號不一致的時候調用。

indexedDB.open方法還有第二個可選參數,數據庫版本號,數據庫創建的時候默認版本號為1,當我們傳入的版本號和數據庫當前版本號不一致的時候onupgradeneeded就會被調用,當然我們不能試圖打開比當前數據庫版本低的version.

代碼中定義了一個myDB對象,在創建indexedDB request的成功毀掉函數中,把request獲取的DB對象賦值給了myDB的db屬性,這樣就可以使用myDB.db來訪問創建的indexedDB了。

用indexedBD的時候要善用onerror來獲取錯誤的信息,這樣就知道哪里出錯了。

以前做一個webapp碰到的坑

參考之前寫過的一篇文章——【Hours】使用indexedDB中遇到的問題。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
高清一区二区三区四区五区| 国产精品视频xxxx| 伊人伊成久久人综合网站| 欧美日韩一区二区免费在线观看| 久久伊人精品天天| 久久视频精品在线| 海角国产乱辈乱精品视频| 日韩av电影在线网| 91在线高清免费观看| 91av在线影院| 欧美激情亚洲综合一区| 久久露脸国产精品| 欧美高清视频免费观看| 亚洲国产欧美一区二区丝袜黑人| 在线播放日韩欧美| 国产精品午夜一区二区欲梦| 亚洲香蕉成人av网站在线观看| 日韩国产高清污视频在线观看| 91精品国产91久久久久福利| 日韩在线国产精品| 日韩精品视频在线观看网址| 亚洲欧美综合区自拍另类| 精品日本美女福利在线观看| 亚洲无限av看| 欧洲精品在线视频| 91在线色戒在线| 国产亚洲精品激情久久| 亚洲国产91精品在线观看| 精品性高朝久久久久久久| 成人黄色片网站| 久久在线精品视频| 国产精品揄拍500视频| 欧美日韩裸体免费视频| 成人在线播放av| 亚洲最大福利网站| 国产精品久久久久久av福利| 6080yy精品一区二区三区| 久久视频国产精品免费视频在线| 国产成人av网址| 欧美性色视频在线| 国产精品成人aaaaa网站| 亚洲成年人在线| 国产91精品久| 深夜精品寂寞黄网站在线观看| 成人免费激情视频| 国产精品都在这里| 国内精品美女av在线播放| 成人黄色短视频在线观看| 日韩在线观看成人| 国产精品久久久久久久天堂| 欧美国产高跟鞋裸体秀xxxhd| 国产精品久久久久99| 欧美www视频在线观看| 久久影院免费观看| 国产日韩欧美在线视频观看| 欧美色道久久88综合亚洲精品| 黑丝美女久久久| 欧美色xxxx| 亚洲一级黄色av| 国模精品一区二区三区色天香| 福利二区91精品bt7086| 国产精品96久久久久久又黄又硬| 日韩欧美在线播放| 日本免费一区二区三区视频观看| 97成人在线视频| 欧美视频专区一二在线观看| 欧美中文在线观看| 欧美大尺度激情区在线播放| 亚洲免费伊人电影在线观看av| 一区二区福利视频| 亚洲精品v欧美精品v日韩精品| 97久久精品人人澡人人爽缅北| 少妇精69xxtheporn| 日韩在线观看你懂的| 成人黄色片网站| 欧美黄色片免费观看| 国产精品免费福利| 欧美午夜激情在线| 国产成人一区二区在线| 欧美性色19p| 欧美日韩一区免费| 国产乱人伦真实精品视频| 亚洲色图激情小说| 欧美日韩另类在线| 日韩精品视频免费专区在线播放| 国产精品69久久久久| 国产精品无码专区在线观看| 久久久久久久久久亚洲| 亚洲福利在线看| 亚洲精品永久免费精品| 亚洲欧美国产一本综合首页| 日韩视频―中文字幕| 欧美日韩亚洲天堂| 国产成人精品一区二区三区| 久久久电影免费观看完整版| 亚洲肉体裸体xxxx137| 久久久国产精品视频| 成人a在线视频| 亚洲在线免费看| 国产精品免费观看在线| 亚洲人成网在线播放| 中文字幕日韩精品有码视频| 日韩专区中文字幕| 浅井舞香一区二区| 色狠狠av一区二区三区香蕉蜜桃| 日韩精品中文字幕久久臀| 午夜免费日韩视频| 亚洲全黄一级网站| 久久久精品在线| 欧美一级片免费在线| 青青草一区二区| 亚洲**2019国产| 91视频-88av| 欧美一区二区.| 日韩中文字幕网址| 日韩在线播放一区| 在线观看成人黄色| 97色在线视频观看| 日韩美女在线看| 久久这里只有精品视频首页| 亚洲精品久久久一区二区三区| 精品久久久久久久久久| 久久久欧美精品| 中文字幕国产日韩| 欧美高清电影在线看| 在线免费观看羞羞视频一区二区| 久久99精品国产99久久6尤物| 九九久久久久久久久激情| 91日本视频在线| 欧美在线一区二区视频| 亚洲精品成人久久久| 欧美理论电影在线观看| 欧美国产极速在线| 中文字幕精品网| 国内精品小视频| 国产午夜精品麻豆| 另类天堂视频在线观看| 91成人福利在线| 欧美多人乱p欧美4p久久| 91在线国产电影| 国产99久久久欧美黑人| 国产成人啪精品视频免费网| 国产精品一区久久| 亚洲福利视频专区| 91亚洲精品久久久久久久久久久久| 日韩一区二区三区国产| 26uuu日韩精品一区二区| 欧美精品video| www国产亚洲精品久久网站| 精品欧美国产一区二区三区| 国产成人久久精品| 亚洲欧美制服另类日韩| 亚洲男人天堂视频| 国产精品福利观看| 亚洲成人久久久久| 一区二区三区 在线观看视| 日韩在线资源网| 91精品一区二区| 日韩电影免费在线观看| 国产成人精品一区二区三区| 亚洲免费一在线| 亚洲一二在线观看| 国产成人精品免费久久久久| 伊人久久男人天堂|