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

为什么我的新objectStores不能在现有indexedDB上创建?

在回答这个问题之前,首先需要了解一些相关的背景知识。

IndexedDB是一种浏览器内置的客户端数据库,用于在Web应用程序中存储和检索结构化数据。它提供了一个类似于关系型数据库的API,可以在浏览器中创建、读取、更新和删除数据。

Object Stores是IndexedDB中的一个概念,它类似于关系型数据库中的表格,用于存储和组织数据。每个Object Store都有一个唯一的名称,并且可以定义不同的索引来加快数据的检索。

现在回到问题本身,为什么新的Object Stores不能在现有的IndexedDB上创建呢?

  1. 版本管理:IndexedDB使用版本管理来控制数据库的结构和数据的变化。每当需要更改数据库结构时,都需要通过增加数据库的版本号来触发升级操作。如果要创建新的Object Stores,需要在升级操作中定义新的Object Store,并且在升级回调函数中执行创建操作。
  2. 事务控制:在IndexedDB中,所有的读写操作都需要在事务中进行。当创建新的Object Stores时,需要在一个事务中执行创建操作。如果在已经存在的Object Stores上创建新的Object Stores,需要确保在同一个事务中进行,否则会导致操作失败。
  3. 数据库打开方式:在打开IndexedDB数据库时,需要指定数据库的名称和版本号。如果要在现有的IndexedDB上创建新的Object Stores,需要确保打开数据库时使用的版本号与已有的数据库版本号一致,否则会导致打开失败。

综上所述,如果新的Object Stores不能在现有的IndexedDB上创建,可能是由于版本管理、事务控制或数据库打开方式等方面的问题。需要确保在正确的版本管理和事务控制下,使用正确的数据库打开方式来创建新的Object Stores。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云数据库 TDSQL:https://cloud.tencent.com/product/tdsql
  • 腾讯云云数据库 CDB:https://cloud.tencent.com/product/cdb
  • 腾讯云云数据库 Redis:https://cloud.tencent.com/product/redis
  • 腾讯云云数据库 MongoDB:https://cloud.tencent.com/product/mongodb
  • 腾讯云云数据库 MariaDB:https://cloud.tencent.com/product/mariadb
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么把 Run 出来 Apk 发给老板,却装

Run Apk 2.1 textOnly 属性 我们知道,AS Run 起来 Apk,会使用 Debug 签名进行签名,不过安装,并不是签名问题。...这就是为什么你无法安装 Run 出来 Debug.apk。 2.2 为什么要这么设计? 这个问题,对于大多数开发者来说,基本不是问题。...如果你觉得那里值得改进,请给我留言。一定会认真查询,修正不足。谢谢。 希望读到这您能转发分享和关注一下,以后还会更新技术干货,谢谢您支持!...毕业3年,是如何从年薪10W拖拽工程师成为30W资深Android开发者! 腾讯T3大牛带你了解 2019 Android开发趋势及必备技术点!...八年Android开发,从码农到架构师分享技术成长之路,共勉! 最后祝大家生活愉快~

2.6K30

为什么把 Run 出来 Apk 发给老板,却装

Run Apk 2.1 testOnly 属性 我们知道,AS Run 起来 Apk,会使用 Debug 签名进行签名,不过安装,并不是签名问题。...只有 AS 3.0+ IDE ,Run 出来 APK,才会默认带上 testOnly 属性,这将阻止你使用正常方式安装。...这就是为什么你无法安装 Run 出来 Debug.apk。 2.2 为什么要这么设计? 这个问题,对于大多数开发者来说,基本不是问题。...如果因为流程失误,将其分享出去,这也是很容易就可以发现,因为这个包正常流程无法安装。 2.3 是不是真的无法安装?...如果我们非要安装一个带有 testOnly Apk,其实也是有办法,否则 AS 又是如何将 Run 起来包,安装到设备呢?

2.5K00

ES6(四)用Promise封装一下IndexedDB 配置文件内部成员建立对象库以及打开数据库初始化对象添加对象修改对象删除对象清空仓库里对象删除对象仓库删除数据库按主键获取对象,

indexedDB IndexedDB 是一种底层 API,用于在客户端存储大量结构化数据,它可以被网页脚本创建和操作。...需求 想更好实现文档驱动想法,发现需要实现前端存储功能,于是打算采用 IndexedDB 来实现前端存储功能。但是看了一下其操作方式比较繁琐,所以打算封装一下。...配置文件 nf-indexedDB.config const config = { dbName: 'dbTest', ver: 1, debug: true, objectStores...* 可以传值。...indexedDB 逻辑是这样,在open数据库时候判断本地有没有数据库,如果没有数据库则触发 onupgradeneeded 事件,创建数据库,然后打开数据库。

2.1K20

IndexedDB详解

IndexedDB是自带transaction,所有的数据库操作都会绑定到特定事务,并且这些事务是自动提交了,IndexedDB并不支持手动提交事务。...但是,通常来说带前缀实现一般都是不稳定,所以我们通常建议在正式环境中使用,所以如果不支持标准表达式的话,需要直接报错: if (!...."); } 创建IndexedDB 要使用IndexedDB,我们首先需要open it: // Let us open our database var request = window.indexedDB.open...当你创建一个数据库或者升级一个现有的数据库版本时候,将会触发一个onupgradeneeded事件,并在事件中传入IDBVersionChangeEvent,我们可以通过event.target.result...transaction接收两个参数,第一个参数是一个数组,数组中是这个trans中将会处理ObjectStores,第二个参数是处理模式。

65431

浏览器数据库 IndexedDB(一) 概述

IndexedDB 就是浏览器提供本地数据库,它可以被网页脚本创建和操作。...现有的浏览器数据储存方案,都不适合储存大量数据:Cookie 大小超过4KB,且每次请求都会发送回服务器;LocalStorage 在 2.5MB 到 10MB 之间(各家浏览器不同),而且不提供搜索功能...所以,需要一种解决方案,这就是 IndexedDB 诞生背景。...(4)同源限制 IndexedDB 受到同源限制,每一个数据库对应创建域名。网页只能访问自身域名下数据库,而不能访问跨域数据库。...~ 学习有趣知识,结识有趣朋友,塑造有趣灵魂! 大家好,是〖编程三昧〗作者 隐逸王,公众号是『编程三昧』,欢迎关注,希望大家多多指教! 你来,怀揣期望,有墨香相迎!

80310

JavaScript是如何工作:存储引擎+如何选择合适存储API

如果你是首次调用 requestFileSystem(),系统会为你应用创建存储。请注意,这是沙箱文件系统,也就是说,一个网络应用无法访问另一个应用文件。...在标签或窗口打开一个页面时会在顶级浏览上下文中初始化一个会话,这点和 session cookies 运行方式不同。...IndexedDB API提供了索引(indexes)、表(tables)、指针(cursors)等等,但是所有这些必须是依赖于某种事务。因此,你不能在事务外执行命令或者打开指针。...The IndexedDB API 基本是异步IndexedDB API 不通过 return 语句返回数据,而是需要你提供一个回调函数来接受数据。...这篇主要一些内容原作者大部分是通过 MDN 整理组合也是根据中文 MND 整理组合。 你点赞是持续分享好东西动力,欢迎点赞! 一个笨笨码农,世界只能终身学习!

1.6K10

本地储存之 Cookie、webStorage、indexedDB

否在一直存在 页面关闭就清理 除非被清理,否在一直存在 数据储存大小 4k 5M左右 5M左右 理论无限 与服务端通信 请求时会携带在 Http header 中,对于请求性能稍有影响 参与 参与...就像一个经常和你聊天朋友,天南地北都什么都聊,可每次你都不知道你们一次聊得是什么,以及他叫什么名字。 那怎么办才能让他知道呢?...它可以携带用户信息,当服务器检查 Cookie 时候,便可以获取到客户端状态,也就可以证明是谁了。 Cookie 是以键值对形式存储。...'user_name') 清空数据记录:clear() localStorage.clear() #indexedDB IndexedDB 是一个运行在浏览器非关系型数据库。...本人用也不是很多,具体用法可以参考:浏览器数据库 IndexedDB 入门教程 #PWA PWA(Progressive web apps,渐进式 Web 应用)运用现代 Web API 以及传统渐进式增强策略来创建跨平台

1K30

造一个 idb-keyval 轮子

自己感觉是依然不会使用 indexedDB,感觉每一步操作都很简单但是就是不会把整个流程跑通。 正好最近用到了 idb-keyval 这个库,阅读了一下源码后终于是有点感觉了。...咱们诉求是什么呀?是通过一个简单 API 来获取一个 value,里面的逻辑应该只要调几个接口就够了。你让造这么多个回调和监听,只为拿一个 value 值。丢丢人?恶恶心?难看不难看呐?...这里我们使用遍历 cursor 方法来实现,而且 cursor 天生就有 key 和 value,对这三个 API 现有很大帮助。...4 个回调每对回调都完美对应 Promise resolve 和 reject,所以 promisify 过程基本是无痛 indexedDB 公共逻辑是:打开数据库、创建对象仓库(如果没有的话)、创建事务...其实,一直都知道 indexedDB 存在和它 API。但是如果要马上实现类似 localStorage.getItem API 属实很难。

32210

你可能需要indexedDB存储技术

首先他这个问题让想到,在开发项目的时候一些对于上传图片后,图片回显操作,这里进行总结一下。...目前可以采用方式为localStorage存储在本地,但是如果图片数据过大(大于10M,目前浏览器localStorage 在 2.5MB 到 10MB 之间),那么就需要一种解决方案,那就是本文主角...通俗地说,IndexedDB 就是浏览器提供本地数据库,它可以被网页脚本创建和操作。IndexedDB 允许储存大量数据,提供查找接口,还能建立索引。...至于为什么会被废弃,可以参考这篇文章:HTML5 indexedDB前端本地存储数据库实例教程 IndexedDB 基本用法 IndexedDB基本操作可以参考阮一峰老师写:浏览器数据库 IndexedDB...答案当然是有的,还不少呢,有了这些封装库,我们可以更快更简单进行IndexedDB操作。 indexedDB 兼容性 基本IE10+都支持。https://caniuse.com/?

1.8K20

JavaScript LocalStorage 完整指南

为什么需要 localStorage? localStorage 中有许多有用特性,包括「存储用户信息」功能,以及允许你根据需要脱机工作功能。...3.5 预先数据 可以使用 localStorage 存储预填充应用程序版本。当用户访问你应用程序时,他们立即在屏幕看到一些东西,然后你应用程序可以调用后端获取信息。 4....一个是「持久性」:存储在 localStorage 中数据在会话中持续存在。打开选项卡、访问域或关闭浏览器都不会清除 localStorage。...打开一个选项卡或访问一个域将清除特定域会话。 另一个区别是,在少数浏览器情况下,localStorage 不能在隐身模式下工作,但 sessionStorage 可以。...那么,为什么不在所有情况下都使用 IndexedDB 呢?如果希望在客户端存储结构化数据,IndexedDB 是更好选择,特别是因为 localStorage 不是为存储敏感信息而构建

2.1K10

vue3 专用 indexedDB 封装库,基于Promise告别回调地狱 准备创建数据库信息直接使用做个“外壳”套个娃

使用也是很简单,网上可以找到很多教程,官网也推荐了几个封装类库。 只是比较懒,得看别人类库(好吧,看不懂),而是想按照自己想法封装一个自己用着习惯类库。...stores 对象仓库说明,在 onupgradeneeded 事件里面依据这个信息创建对象仓库。 init indexedDB 都准备好之后回调函数。...以前是 使用 provide / inject 保存,但是发现有点不太方便,也不是十分必要,所以改成了静态对象方式。...部分 dbHelp, // indexedDB help dbCreateHelp, // 创建 help 实例,初始化设置 useDBHelp, // 组件里获取 help 实例...索引和查询 由于篇幅有限,这里就先介绍了,如果大家感兴趣的话,可以在写一篇补充一下。

1.7K40

浏览器之客户端存储

前言 大家好,是柒八九。我们在网络拾遗之Http缓存文章中,从网络协议视角介绍了网站「客户端缓存」 中HTTP缓存策略,并对「强缓存」和「协商缓存」做了较为详细介绍。...cookie 存储在「客户端」机器,所以有很多针对安全性限制 超过 300 个 cookie 「每个 cookie」 超过 「4 KB」 「每个域」超过 20 个 cookie 「每个域」超过...HTTP-only 可以在浏览器设置,也可以在服务器设置,但「只能在服务器读取」,这是因为 「JS 无法取得这种 cookie 值」。...如果给定名称数据库「已存在」,则会发送一个「打开」它请求 如果「不存在」,则会发送「创建并打开」这个数据库请求 这个方法会返回 IDBRequest 实例,可以在这个实例添加 onerror...add()/put():添加和更新对象 get():获取对象 delete():删除对象 clear():删除所有对象 这 5 个方法都创建请求对象」。

2.4K20

苹果 Safari浏览器漏洞敲响跨站用户跟踪警钟

Mozilla组织在其API文档中指出:“和大多数网络存储解决方案一样,IndexedDB遵循同源策略,因此用户可以在一个域中访问存储数据而不能在不同域中访问数据。”...每次网站与数据库交互时,都会在同一浏览器会话中所有其他活动框、选项卡和窗口中创建一个具有相同名称空数据库。 这种侵犯隐私处理方式允许了网站获取用户在不同选项卡或窗口中访问其他网站。...因为这些网站创建IndexedDB数据库包含了经过认证谷歌用户ID,这是唯一标识单个 Google 账户内部标识符。...“这是一个巨大漏洞,”谷歌 Chrome 浏览器开发者倡导者 Jake Archibald 在推特写道。...“在 OSX 操作系统,Safari 用户可以暂时切换到另一个浏览器以避免他们数据跨源泄漏,可是iOS 用户没有这样选择,因为苹果禁止其他浏览器引擎。”

70810

IndexedDB 教程

IndexedDB 教程 IndexedDB 是一个基于 JavaScript 面向对象事务型数据库。有了 LocalStorage 和 Cookies,为什么还要推出 indexedDB 呢?...我们可以使用每条记录中某个指定字段作为键值(keyPath),也可以使用自动生成递增数字作为键值(keyGenerator),也可以指定。...db.objectStoreNames.contains(personStore)) { //如果表格不存在,创建一个表格(keyPath,主键 ; autoIncrement,是否自增),...db.objectStoreNames.contains(personStore)) { console.log("需要创建一个存储对象"); //如果表格不存在...,创建一个表格(keyPath,主键 ; autoIncrement,是否自增),会返回一个对象(objectStore) var objectStore = db.createObjectStore

1.5K20

PWA 系列(三)——IndexedDB

PWA 系列(三)——IndexedDB IDB 操作基本步骤是 open 方法打开数据库 ? 然后是创建数据库 store 对象仓库 ?...需要注意更新数据库版本应先调用 close 方法关闭旧版数据库 需要注意创建 store 一定要在新版本数据库 upgradeneeded 事件处理函数中创建,因为本质他是修改数据库结构 如果对数据库进行数据操作那么需要通过事务来执行...dbName 来创建这个数据库 第二部,通过 open 方法打开数据库 第三部,监听 onsuccess 方法,打开成功数据库对象就在这个 request result 对象里面 使用方法: ;...) 第二步,然后通过 open 方法传入新版本号来创建版本数据库( ⚠️ 注意版本号始终应当为整型数值) 第三步,监听 upgradeneeded 事件,将 request result 对象返回...example.com' } 需要注意是: name 为 name 键索引 唯一 age 为 age 键索引 唯一 email 为主键 唯一不重复 创建存储空间需要调用 db 数据库对象 createObjectStore

76820

【javascript】谈谈HTML5: Web-Worker、canvas、indexedDB、拖拽事件

因为,如果不去了解这个崭新战斗方法的话,他们在残酷新世界一天也生存不了。 为什么学习HTML5? 咳咳, 回到主题,为什么我们要学HTML5呢?...正是我们想要图片 indexedDB — — H5“浏览器数据库” indexedDB是存在于浏览器中数据库,它和一般数据库一样有写改删查功能,不同之处在于:常见数据库一般是在服务器,并且要求我们应用在线时才可以工作...下面,就给大家介绍一下这个“驻扎”在浏览器特殊数据库吧 使用open方法创建/打开数据库 我们首先要做事情,当然是创建(或打开)一个数据库,这要用到indexedDB对象open方法 它接收两个参数...: 数据库名称和数据库版本(第二个参数是可选indexedDB.open([ 数据库名称 ], [数据库版本]) 调用open方法时候,如果对应名称数据库不存在,则创建一个数据库,如果已存在...,则打开已存在那个数据库 需要说明是, indexedDB里面绝大多数操作都是异步, 上述indexedDB.open并不会立即创建一个数据库, 你需要在异步回调里面判断数据库是否创建成功,并对可能出现错误做判断和处理

3.1K30
领券