indexedDB 저장소의 코드 예
이 기사는 indexedDB 저장소에 대한 코드 예제를 제공합니다. 이는 특정 참조 가치가 있으므로 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>indexedDB(浏览器本地存储数据库)</title> </head> <body> <p>IndexedDB 就是浏览器提供的本地数据库,它可以被网页脚本创建和操作。</p> <p>IndexedDB 允许储存大量数据,提供查找接口,还能建立索引。</p> <h3>indexedDB特点</h3> <ol> <li>键值对存储:采用对象仓库存储数据,所有的数据类型都可以直接存入,主键是独一无二的</li> <li>异步:</li> <li>支持事务:IndexedDB 支持事务(transaction),这意味着一系列操作步骤之中,只要有一步失败,整个事务就都取消,数据库回滚到事务发生之前的状态,不存在只改写一部分数据的情况。</li> <li>同源限制: IndexedDB 受到同源限制,每一个数据库对应创建它的域名。网页只能访问自身域名下的数据库,而不能访问跨域的数据库。</li> </ol> <script> /** * databaseName:字符串,表示数据库的名字,不存在则新建 * version :第二个参数是整数,表示数据库的版本。默认为1 * 返回一个 IDBRequest 对象 对象通过三种事件error、success、upgradeneeded * * 新建数据库与打开数据库是同一个操作。如果指定的数据库不存在,就会新建。不同之处在于,后续的操作主要在upgradeneeded事件的监听函数里面完成 * * 新建数据步骤: * step1:新建对象仓库(即新建表 * step2:新建索引 * * */ //IDBDatabase对象 let db; //创建或者打开 let request = window.indexedDB.open('newIDB'); //删除数据库 var DBDeleteRequest = window.indexedDB.deleteDatabase('newIDB'); DBDeleteRequest.onerror = function (event) { console.log('Error'); }; DBDeleteRequest.onsuccess = function (event) { console.log('success'); }; //error事件--表示打开数据失败 request.onerror = function (event) { console.log('数据库打开报错'); db.close(); }; request.success = function (event) { //通过request对象的result属性拿到数据库对象 db = request.result; console.log(db); console.log('数据库打开成功') }; console.log(request); //onupgradeneeded---如果指定的版本号,大于数据库的实际版本号,就会发生数据库升级事件 request.onupgradeneeded = function (event) { //通过事件对象的target.result属性,拿到数据库实例。 console.log(event); //request对象的result属性上面,拿到一个IDBDatabase对象,它表示连接的数据库 db = event.target.result; let objectStore; // 更好的写发是判断表是否存在 if (!db.objectStoreNames.contains('newIDB')) { /**新建数据 * 新建对象仓库(即新建表) * 新增一张叫做person的表格,主键是id * */ //主键(key)是默认建立索引的属性。如果没有可以让 IndexedDB 自动生成主键db.createObjectStore('person',{ autoIncrement: true }) objectStore = db.createObjectStore('newIDB', {keyPath: 'id'}); /** * 新建索引 * 三个参数分别为索引名称、索引所在的属性、配置对象(说明该属性是否包含重复的值) * **/ objectStore.createIndex('name', 'name', {unique: false}); objectStore.createIndex('email', 'email', {unique: true}); } }; /**新增数据 * 新增数据指的是向对象仓库写入数据记录。这需要通过事务完成。 * 写入数据需要新建一个事务 * 新建时必须指定表格名称和操作模式("只读"或"读写") * 写入操作是一个异步操作,通过监听连接对象的success事件和error事件,了解是否写入成功。 * **/ function add() { //通过IDBTransaction.objectStore(name)方法,拿到 IDBObjectStore 对象,再通过表格对象的add()方法,向表格写入一条记录。 var request = db.transaction(['newIDB'], 'readwrite') .objectStore('newIDB') .add({id: 1, name: '张三', age: 24, email: 'zhangsan@example.com'}); request.onsuccess = function (event) { console.log('数据写入成功'); }; request.onerror = function (event) { console.log('数据写入失败'); } } setTimeout(function () { console.log(db); add(); }, 2000); /** 读取数据 * *读取数据也是通过事务完成。 * * * **/ function read() { //创建是务 let transaction = db.transaction(['newIDB']); //拿到 IDBObjectStore 对象 let objectStore = transaction.objectStore('newIDB'); //objectStore.get()方法用于读取数据,参数是主键的值。 let request = objectStore.get(1); //失败监听 request.onerror = function (event) { console.log('事务失败'); db.close() }; //成功监听 request.onsuccess = function (event) { if (request.result) { console.log('Name: ' + request.result.name); console.log('Age: ' + request.result.age); console.log('Email: ' + request.result.email); } else { console.log('未获得数据记录'); } }; } setTimeout(function () { read(); }, 4000); /**遍历数据 *遍历数据表格的所有记录,要使用指针对象 IDBCursor。 * * */ function readAll() { let objectStore = db.transaction('newIDB').objectStore('newIDB'); //新建指针对象的openCursor()方法是一个异步操作,所以要监听success事件。 objectStore.openCursor().onsuccess = function (event) { let cursor = event.target.result; if (cursor) { console.log('Id: ' + cursor.key); console.log('Name: ' + cursor.value.name); console.log('Age: ' + cursor.value.age); console.log('Email: ' + cursor.value.email); cursor.continue(); } else { console.log('没有更多数据了!'); } }; } setTimeout(function () { readAll(); }, 6000); /**跟新数据 *更新数据要使用IDBObject.put()方法。 * * */ function update() { //put()方法自动更新了主键为1的记录。 let request = db.transaction(['newIDB'], 'readwrite') .objectStore('newIDB') .put({id: 1, name: '李四', age: 35, email: 'lisi@example.com'}); request.onsuccess = function (event) { console.log('数据更新成功'); }; request.onerror = function (event) { console.log('数据更新失败'); db.close(); } } setTimeout(function () { update(); }, 8000); /**删除数据 *IDBObjectStore.delete()方法用于删除记录 * * **/ function remove() { let request = db.transaction(['newIDB'], 'readwrite') .objectStore('newIDB') .delete(1); request.onsuccess = function (event) { console.log('数据删除成功'); }; } // remove(); /**使用索引 * 索引的意义在于,可以让你搜索任意字段,也就是说从任意字段拿到数据记录。如果不建立索引,默认只能搜索主键(即从主键取值)。 * */ function search() { let request = db.transaction(['newIDB'], 'readonly') .objectStore('newIDB') .index('name') .get('李四'); request.onsuccess = function (e) { var result = e.target.result; if (result) { console.log('搜索成功') } else { console.log('搜索失败') } } } // search(); </script> </body> </html> **注意:使用的时候链接数据库,失败或者完成其他操作关闭数据库;**
이 기사는 여기서 끝났습니다. 더 흥미로운 콘텐츠를 보려면 PHP 중국어 웹사이트의 JavaScript Video Tutorial 칼럼을 주목하세요!
위 내용은 indexedDB 저장소의 코드 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











WebSocket 및 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법 소개: 지속적인 기술 개발로 음성 인식 기술은 인공 지능 분야의 중요한 부분이 되었습니다. WebSocket과 JavaScript를 기반으로 한 온라인 음성 인식 시스템은 낮은 대기 시간, 실시간, 크로스 플랫폼이라는 특징을 갖고 있으며 널리 사용되는 솔루션이 되었습니다. 이 기사에서는 WebSocket과 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법을 소개합니다.

WebSocket과 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 서론: 인터넷 기술의 급속한 발전과 함께 실시간 모니터링 시스템이 다양한 분야에서 널리 활용되고 있다. 실시간 모니터링을 구현하는 핵심 기술 중 하나는 WebSocket과 JavaScript의 조합입니다. 이 기사에서는 실시간 모니터링 시스템에서 WebSocket 및 JavaScript의 적용을 소개하고 코드 예제를 제공하며 구현 원칙을 자세히 설명합니다. 1. 웹소켓 기술

JavaScript 및 WebSocket을 사용하여 실시간 온라인 주문 시스템을 구현하는 방법 소개: 인터넷의 대중화와 기술의 발전으로 점점 더 많은 레스토랑에서 온라인 주문 서비스를 제공하기 시작했습니다. 실시간 온라인 주문 시스템을 구현하기 위해 JavaScript 및 WebSocket 기술을 사용할 수 있습니다. WebSocket은 TCP 프로토콜을 기반으로 하는 전이중 통신 프로토콜로 클라이언트와 서버 간의 실시간 양방향 통신을 실현할 수 있습니다. 실시간 온라인 주문 시스템에서는 사용자가 요리를 선택하고 주문을 하면

WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법 오늘날의 디지털 시대에는 점점 더 많은 기업과 서비스에서 온라인 예약 기능을 제공해야 합니다. 효율적인 실시간 온라인 예약 시스템을 구현하는 것이 중요합니다. 이 기사에서는 WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. WebSocket이란 무엇입니까? WebSocket은 단일 TCP 연결의 전이중 방식입니다.

JavaScript 및 WebSocket: 효율적인 실시간 일기 예보 시스템 구축 소개: 오늘날 일기 예보의 정확성은 일상 생활과 의사 결정에 매우 중요합니다. 기술이 발전함에 따라 우리는 날씨 데이터를 실시간으로 획득함으로써 보다 정확하고 신뢰할 수 있는 일기예보를 제공할 수 있습니다. 이 기사에서는 JavaScript 및 WebSocket 기술을 사용하여 효율적인 실시간 일기 예보 시스템을 구축하는 방법을 알아봅니다. 이 문서에서는 특정 코드 예제를 통해 구현 프로세스를 보여줍니다. 우리

JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법, 특정 코드 예제가 필요합니다. 서문: 웹 개발에서는 서버와의 데이터 상호 작용이 종종 포함됩니다. 서버와 통신할 때 반환된 HTTP 상태 코드를 가져와서 작업의 성공 여부를 확인하고 다양한 상태 코드에 따라 해당 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법과 몇 가지 실용적인 코드 예제를 제공합니다. XMLHttpRequest 사용

사용법: JavaScript에서 insertBefore() 메서드는 DOM 트리에 새 노드를 삽입하는 데 사용됩니다. 이 방법에는 삽입할 새 노드와 참조 노드(즉, 새 노드가 삽입될 노드)라는 두 가지 매개 변수가 필요합니다.

JavaScript는 웹 개발에 널리 사용되는 프로그래밍 언어인 반면 WebSocket은 실시간 통신에 사용되는 네트워크 프로토콜입니다. 두 가지의 강력한 기능을 결합하면 효율적인 실시간 영상 처리 시스템을 만들 수 있습니다. 이 기사에서는 JavaScript와 WebSocket을 사용하여 이 시스템을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 첫째, 실시간 영상처리 시스템의 요구사항과 목표를 명확히 할 필요가 있다. 실시간 이미지 데이터를 수집할 수 있는 카메라 장치가 있다고 가정해 보겠습니다.
