首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

IndexedDB错误: NotFoundError :无法对‘IDBDatabase’执行'transaction‘:找不到一个指定的对象存储

IndexedDB是一种浏览器内置的客户端数据库,用于在Web应用程序中存储和检索大量结构化数据。它提供了一个异步的、事务性的API,允许开发人员在浏览器中创建和管理数据库,以及执行各种数据库操作。

在IndexedDB中,NotFoundError是一种可能出现的错误类型,它表示无法找到指定的对象存储。当尝试在不存在的对象存储上执行事务时,就会抛出这个错误。

解决这个错误的方法是确保在执行事务之前,已经正确创建了指定的对象存储。可以通过以下步骤来处理:

  1. 确认数据库已成功打开并且版本正确:在打开数据库的请求中,使用正确的数据库名称和版本号,并确保在成功打开数据库后执行相应的回调函数。
  2. 确认对象存储已正确创建:在数据库的版本升级回调函数中,使用createObjectStore方法创建所需的对象存储。确保提供正确的对象存储名称和可选的键路径和参数。
  3. 确认对象存储已准备就绪后再执行事务:在执行事务之前,可以使用onsuccess事件处理程序来监听对象存储的创建过程,并在成功创建后再执行事务操作。

以下是一个示例代码片段,展示了如何处理IndexedDB中的NotFoundError错误:

代码语言:txt
复制
// 打开数据库
var request = indexedDB.open('myDatabase', 1);

// 数据库打开成功
request.onsuccess = function(event) {
  var db = event.target.result;
  
  // 确认对象存储已创建
  if (!db.objectStoreNames.contains('myObjectStore')) {
    // 创建对象存储
    var objectStore = db.createObjectStore('myObjectStore', { keyPath: 'id' });
    
    // 确认对象存储已准备就绪后执行事务
    objectStore.transaction.oncomplete = function(event) {
      // 执行事务操作
      var transaction = db.transaction('myObjectStore', 'readwrite');
      var store = transaction.objectStore('myObjectStore');
      
      // ...
    };
  } else {
    // 对象存储已存在,直接执行事务操作
    var transaction = db.transaction('myObjectStore', 'readwrite');
    var store = transaction.objectStore('myObjectStore');
    
    // ...
  }
};

// 数据库打开失败
request.onerror = function(event) {
  console.log('数据库打开失败');
};

腾讯云提供了一系列云服务和产品,可以帮助开发人员构建和部署云原生应用、管理数据库、进行服务器运维等。具体针对IndexedDB错误的解决方案,腾讯云没有直接相关的产品或服务。但可以使用腾讯云的云服务器、云数据库等基础服务来支持Web应用程序的部署和数据存储。

请注意,以上答案仅供参考,具体解决方案可能因实际情况而异。建议在实际开发中参考IndexedDB的官方文档和相关资源,以获得更详细和准确的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

IndexedDB 教程

IndexedDB 很适合存储大量数据,它 API 是异步调用IndexedDB 使用索引存储数据,各种数据库操作放在事务中执行IndexedDB 甚至还支持简单数据类型。...indexedDB 特性 对象仓库 有了数据库后我们自然希望创建一个表用来存储数据,但 indexedDB 中没有表概念,而是 objectStore,一个数据库中可以包含多个 objectStore...选择键类型不同,objectStore 可以存储数据结构也有差异。 事务性 在 indexedDB 中,每一个对数据库操作是在一个事务上下文中执行。...基于请求 indexedDB 数据库每次操作,描述为通过一个请求打开数据库,访问一个 object store,再继续。...IndexedDB API 天生是基于请求,这也是 API 异步本性指示。对于你在数据库执行每次操作,你必须首先为这个操作创建一个请求。当请求完成,你可以响应由请求结果产生事件和错误

1.6K20

IndexedDB 打造靠谱 Web 离线数据库

}; } 事务在创建时候不仅仅可以制定执行模式,还可以指定本次事务能够影响 ObjectStore 范围,具体细节就是在第一个 transaction 参数里面传入一个数据,然后通过 objectStore...Appendix IndexedDB 数据库使用key-value键值储存数据.你可以对对象某个属性创建索引(index)以实现快速查询和列举排序。....每个数据库在任意时刻只能有一个 version 对象存储(object store): 用来承载数据一个分区.数据以键值形式被对象存储永久持有。...现在还可以存储 files and blob 对象。 操作作用域 scope:这可以比作 transaction 作用域,即,一系列 transaction 执行顺序。...参考: IDBRequest API IDBDatabase对象常常用来做 Object Store 和 transaction 创建和删除。

3.1K30
  • javascript 操作浏览器数据库IndexedDB

    为此,大多数操作以请求形式执行,这些请求会异步执行,产生成功结果或错误。绝大多数 IndexedDB 操作要求添加 onerror 和 onsuccess 事件处理程序来确定输出。...对象仓库中,数据以"键值"形式保存,每一个数据记录都有对应主键,主键是独一无二,不能有重复,否则会抛出一个错误。2 异步。...IndexedDB 数据库就是在一个公共命名空间下一组对象存储,类似于 NoSQL 风格实现。...用户名必须全局唯一,它也是大多数情况下访问数据凭据。这个键很重要,因为创建对象存储时必须指定一个键。数据库版本决定了数据库模式,包括数据库中对象存储和这些对象存储结构。...,可能需要为对象存储指定多个键。

    20320

    浏览器里本地数据库:IndexedDB

    Cookie 或者 LocalStorage 无法提供能力。...IndexedDB 主要概念 IndexedDB一个比较复杂 API 组合,学习它过程就相当于学习它各个对象 API 接口,包括以下这些( IDB 指当前操作数据库实例 ): 数据库:IDBDatabase...数据:对象仓库中记录是若干条数据,数据只有主键和数据体两个部分,主键不能重复,可以为自增整数编号或者数据中指定一个属性。数据体可以是任意数据类型,不限于对象。...(event) { let db = event.target.result; // 创建一个数据库存储对象,并指定主键 let objectStore = db.createObjectStore..."); // 打开已经存储数据对象 let objectStore = transaction.objectStore('person'); // 获取存储对应键存储对象, 传入主键 id,值为

    1.4K10

    用NW.js构建跨平台桌面应用(4)-数据持久化

    SQL Database 规范,但由于其广泛实现程度,了解这些 API Web 开发还是非常有必要 3.1 基本概念 SQL语句(SQL statement): 一条SQL查询语句 事务(transaction...): 管理并顺序执行若干条SQL语句容器,可以嵌套 错误回调:每条 SQL statement 及其所处 transaction 都有各自错误回调,用于精细或集约捕获错误并引发回滚 回滚(roll...(): 新建数据库对象或打开已有的 transaction(): 执行一个事务并在错误发生时回滚 executeSql(): 执行SQL语句 //初始化一个数据库 var db = openDatabase...IndexedDB 存储 key-value 数据事务型 NoSQL 非关系型数据库系统 可以存储复杂javascript对象,并用一个或多个索引查询 基本没有容量限制 所有操作都是异步 4.1...基本概念 数据库: 由 indexedDB.open(name, ver) 方法打开,返回一个IDBDatabase接口格式异步请求对象 ObjectStore: 相当于关系型数据库中数据库表table

    2K20

    PWA 系列(三)——IndexedDB

    打开数据库 window.indexedDB一个 IDBFactory 对象,调用对象 open 方法返回一个 IDBOpenDBRequest 请求,监听 success 事件,e.target.result...指向一个名为 IDBDatabase 对象,该对象就是连接到数据库唯一 API。...需要注意IDBDatabase 对象有 close、createObjectStore、deleteObjectStore、transaction 方法和 name、version 等常用属性:...db,一个是 store 名称,另外一个则是需要插入数据 然后调用 db transaction,传入 store 名称并设置操作为读写权限,然后打开存储空间并调用 add 方法插入数据 最后监听...db 对象一个存储空间名称 然后创建一个 request 调用存储空间 openCursor 方法 然后监听 request success 事件 检测是否存在 cursor,如果是则 push

    80620

    深入了解浏览器存储

    ,理论上 Cookie 无法胜任、可以用简单键值来存取数据存储任务,都可以交给 LocalStorage 来做。...它使用键值形式进行存储,这种模式有点类似于对象,却甚至连对象都不是——它只能存储字符串,要想得到对象,我们还需要先字符串进行一轮解析。...对象仓库中,数据以"键值"形式保存,每一个数据记录都有对应主键,主键是独一无二,不能有重复,否则会抛出一个错误。...IDBDatabase对象,这就是IndexedDB对象 console.log(myDB.db)//此处就可以获取到db实例 } } var myDB={ name:'testDB', version...:'1', db:null } openDB(myDB.name) 控制台得到一个 IDBDatabase对象,这就是IndexedDB对象 关闭IndexedDB---- indexdb.close

    59130

    深入了解浏览器存储

    从上图中我们可以得出: Domain 标识指定了哪些域名可以接受Cookie。如果没有设置domain,就会自动绑定到执行语句的当前域。...,理论上 Cookie 无法胜任、可以用简单键值来存取数据存储任务,都可以交给 LocalStorage 来做。...它使用键值形式进行存储,这种模式有点类似于对象,却甚至连对象都不是——它只能存储字符串,要想得到对象,我们还需要先字符串进行一轮解析。...对象仓库中,数据以"键值"形式保存,每一个数据记录都有对应主键,主键是独一无二,不能有重复,否则会抛出一个错误。...:'1', db:null } openDB(myDB.name) 控制台得到一个 IDBDatabase对象,这就是IndexedDB对象 ?

    85840

    IndexedDB 基础

    主键用来建立默认索引,必须是不同,否则会报错。主键可以是数据记录里面的一个属性,也可以指定一个递增整数编号。...基本模式 IndexedDB 鼓励使用基本模式如下所示: 打开数据库并且开始一个事务 创建一个 object store 构建一个请求来执行一些数据库操作,像增加或提取数据等 通过监听正确类型 DOM...我们可以通过监听 indexedDB.open() 方法返回一个 IDBOpenDBRequest 对象 success 、error 和 upgradeneeded 事件来执行相应操作。...创建一个对象仓库 有了刚刚创建数据库之后,我们可能就想要去存储数据了,但是只有数据库还不够,我们还需要有对象仓库(object store),对象仓库是 IndexedDB 数据库基础,其类似于关系型数据库中表概念...transaction() 接受两个参数: 第一个是你要操作对象仓库名称。第二个是你创建事务模式。传入 readonly 时只能对对象仓库进行读操作,无法写操作。

    58920

    浏览器数据库 IndexedDB 入门教程

    对象仓库中,数据以"键值"形式保存,每一个数据记录都有对应主键,主键是独一无二,不能有重复,否则会抛出一个错误。 (2)异步。...IndexedDB 不仅可以储存字符串,还可以储存二进制数据(ArrayBuffer 对象和 Blob 对象)。 二、基本概念 IndexedDB一个比较复杂 API,涉及不少概念。...每条记录类似于关系型数据库行,但是只有主键和数据体两部分。主键用来建立默认索引,必须是不同,否则会报错。主键可以是数据记录里面的一个属性,也可以指定一个递增整数编号。...3.2 新建数据库 新建数据库与打开数据库是同一个操作。如果指定数据库不存在,就会新建。...主键也可以指定为下一层对象属性,比如{ foo: { bar: 'baz' } }foo.bar也可以指定为主键。

    73210

    认识浏览器缓存

    2.2.3 IndexedDB IndexedDB更像一个NoSQL数据库,数据 以键值形式保存。每一条数据存储都有一个主键,主键是独一无二。...1)基本概念 概念 描述 数据库 IDBDatabase 对象,类似传统数据库DB 对象仓库 IDBObjectStore 类似于传统数据库Table,每一个IDBDatabase都包含若干个DIBObjectStore...和传统数据库操作中事务概念类似,表示一系列操作整体性,如果某一步出错,则整体操作回滚 操作请求 window.indexedDB.open方法将创建一个操作请求:IDBRequest对象。...,索引,主键等,这些都是很好一些特性 3 支持二进制存储 和Cookie,localStorage等不同是,indexedDB几乎支持任何类型数据存储,包括文本数据,二进制数据,js对象等,对于需要直接存储二进制数据需求特别友好...,用于打开/新建一个数据库连接,调用成功返回一个db实例 transaction 挂在db实例下方法,用于事务操作 executeSql 挂在事务实例下方法,用于执行具体SQL语句 3)简单Demo

    1.6K61

    浏览器数据库 IndexedDB入门

    对象仓库中,数据以”键值形式保存,每一个数据记录都有对应主键,主键是独一无二,不能有重复,否则会抛出一个错误。 (2)异步。 ...IndexedDB 不仅可以储存字符串,还可以储存二进制数据(ArrayBuffer 对象和 Blob 对象)。 二、基本概念 IndexedDB一个比较复杂 API,涉及不少概念。...每条记录类似于关系型数据库行,但是只有主键和数据体两部分。主键用来建立默认索引,必须是不同,否则会报错。主键可以是数据记录里面的一个属性,也可以指定一个递增整数编号。...3.2 新建数据库 新建数据库与打开数据库是同一个操作。如果指定数据库不存在,就会新建。...主键也可以指定为下一层对象属性,比如{ foo: { bar: 'baz' } }foo.bar也可以指定为主键。

    60640

    H5-本地数据库indexdb

    浏览量 1 HTML5 一个重要特性是本地数据持久性,它使用户能够在线和离线访问 Web 应用程序。IndexedDB支持本地存储大量对象,并使用健壮数据访问机制检索数据。...一个网站能够创建多个本地数据库,其中每个数据库都可以存放多个数据对象一个对象中有存在多个数据集合,每个数据集合中有多个键值。...} } 创建一个存储对象 在这里我们创建了一个名称为students存储对象,并且在创建时候指定id字段作为数据存储键值。...(obj, "readwrite").objectStore(obj); store.add(data); } } 写到这里时候遇到了一个错误”未捕获TypeError:无法使用...,索引创建需要在创建存储对象时候进行创建,如果先创建了存储对象,然后通过获取到对象,再进行索引创建时候,这样是不成功,所以在这里我们重新创建了一个名称teachers存储对象

    84520

    IndexedDB使用与出坑指南

    使用IndexedDB 现在,我们将其根据IndexedDB结构来其操作进行介绍,能让大家这个存储空间有一个初步了解。...接受两个参数: 第一个参数,存储空间名称,即我们上面的customers。 第二个参数,指定存储keyPath值为存储对象某个属性,这个属性能够在获取存储空间数据时候当做key值使用。...它接受三个参数: 第一个参数,索引名称。 第二个参数,指定根据存储数据一个属性来构建索引。 第三个属性, options对象,其中属性unique值为true表示不允许索引值相等。...可能会出现异常: 用户清除浏览器缓存 存储空间超过大小限制 此时,需要对错误进行捕获,并且用户进行提示。...总结 IndexedDB在本地存储中有着无可替代作用,是替代关系型数据库web sql产品,能够大量数据进行存储。在许多需要运用离线存储场景下,它能够给我们提供有效支撑。

    7.9K53

    indexedDB_INDEX函数

    如果传入数据库版本比浏览器实际最新版本低,则会抛出一个错误。 3. 表-对象仓库 某项业务数据集合,有三种类型 对象型仓库。...记录 一条记录就是一个键值 键 keyPath。在值对象中,获取一个节点值属性链式方法字符串表达 自动生成。...将没有keyPath,只有自增key 值 字符串 日期类型 对象 数组 文件 Blob 图像数据 ArrayBuffer 无法存储function等非结构化数据 6....事务生命周期:事务会把你在它生命周期里规定操作全部执行执行完毕,事务就关闭了,无法利用事务实例进行下一步操作 创建事务 db.transaction(objectStoresArray, readWriteMode...传入表名称必须在transaction()方法一个参数中指定,否则将会报错,比如最后一行读取就是一个没有指定表,将会报以下错误: 添加记录 objectStore.add(object

    1K50

    详解浏览器存储

    所有wrox.com子域及该域中所有页面有效(通过path=/指定)。...与传统数据库最大区别在于,IndexedDB使用对象存储而不是表格保存数据。IndexedDB数据库就是在一个公共命名空间下一组对象存储,类似于NoSQL风格实现。...理论上来说,IndexedDB 是没有存储上限(一般来说不会小于 250M)。 1.IndexedDB特点 键值储存。 IndexedDB 内部采用对象仓库(object store)存放数据。...所有类型数据都可以直接存入,包括 JavaScript 对象对象仓库中,数据以"键值"形式保存,每一个数据记录都有对应主键,主键是独一无二,不能有重复,否则会抛出一个错误。...异步 IndexedDB设计几乎完全是异步。为此,大多数操作以请求形式执行,这些请求会异步执行,产生成功结果或错误

    1K10

    HTML5学习-day02【悟空教程】

    IndexedDB很适合存储大量数据,它API是异步调用IndexedDB使用索引存储数据,各种数据库操作放在事务中执行IndexedDB甚至还支持简单数据类型。...indexedDB特性 1.对象仓库 有了数据库后我们自然希望创建一个表用来存储数据,但indexedDB中没有表概念,而是objectStore,一个数据库中可以包含多个objectStore,objectStore...键类型存储数据不使用任意值,但是没添加一条数据时候需要指定键参数keyPath任意值,但是没添加一条数据时候需要指定键参数keyGenerator任意值都使用Javascript对象,如果对象中有keyPath...基于请求 indexedDB数据库每次操作,描述为通过一个请求打开数据库,访问一个object store,再继续。IndexedDB API天生是基于请求,这也是API异步本性指示。...对于你在数据库执行每次操作,你必须首先为这个操作创建一个请求。当请求完成,你可以响应由请求结果产生事件和错误。 4.

    1.7K30

    JavaScript IndexedDB 完整指南

    open 方法将返回一个具有多个属性对象,包括 onerror、onupgradenneeded 和 onsuccess,每个属性都接受一个回调函数,在相关事件发生时执行。...这是创建存储 / 表及其模式函数。这个函数在每个版本号下只执行一次。...(如果 onupgradenneeded 函数正在运行,你就知道它是可用) 创建一个名为 todos 存储 / 表 / 集合,其键 id 是一个自动递增数字(记录唯一标识符) 指定 todos_text...** 错误提示:** 如果你正在运行一个热重新加载 web 服务器,如 liveserver,你可能会看到一个错误,没有存储。这是因为 onupgradedneeded 函数在你写完函数之前就执行了。...获取记录 getAll:从 store 中获取所有记录 count:返回 store 中记录数 createIndex:基于给定 index 创建对象来查询 delete: 给定 id 进行删除记录

    1.9K20
    领券