如何从 JavaScript 中删除整个 IndexedDB 数据库?
一个人如何从JavaScript中删除整个索引数据库,而不是仅仅是对象存储?我正在使用 indexeddb shim ,它可能使用websql作为后端. 我主要想知道如何为phantomjs(无头)浏览器执行此操作,尽管Chrome,Safari(在iPad上)和IE10是其他重要的浏览器. 解决方案 据我所知,应该使用 >: var req = indexedDB.deleteDatabase(databaseName); req.onsuccess = function () { console.log("Deleted database successfully"); }; req.onerror = function () { console.log("Couldn't delete database"); }; req.onblocked = function () { console.log("Couldn't delete dat
2 2023-05-25
编程技术问答社区
以连接方式查询ydn-db的最有效方法
设置 我得到了名为' mapnodes01 ',' mapnodes02 ',...,' mapnodes70 '''''''''''''''' 每个都容纳许多节点(键盘 nodeid ) 我得到了另一家名为"数据"的商店,该商店保留了所有可用nodeids(键 nodeid ) 的值 之所以这样的设置,因为MapNode商店保持了节点的不同重叠组合.将数据存储的值存储到每个MapNode商店将很丑陋,因为我需要每小时下载和刷新数据表(〜7000个节点). 问题 SELECT * FROM mapNodes01 JOIN data ON data.nodeID=mapNodes01.nodeID 我该如何有效地执行上述SQL查询对YDN-DB的作用? 我需要在集合中迭代以调用一些功能(在我的情况下绘制SVG). 最重要的是性能. 我找到了这个> 我在indexeddb中进行join-type查询 但是我更喜欢一个代码示例,因为我阅读了所有
4 2023-05-22
编程技术问答社区
使用索引与键值范围的IndexedDB?
在indexeddb中,如果键是整数的数组,例如[n,0]至[n,m]>,则涉及获取所有记录的操作,其中数组键的第一个元素为或在该记录上打开光标相同的一组记录,在使用密钥范围上存储n的附加属性上使用索引是否有任何优势? 认为索引的原因可能不会更好地包括浏览器必须维护每个更改的索引,要将额外的属性添加到每个记录中才能存储已经存储的数据n,而很少可以获得可以获得的,因为索引中的键将始终指向对象存储中的连续记录,而不是分散. 如果n的不同值的数量可能不超过1,000,而对于m则不超过50,则使用索引优于关键范围? 谢谢. 解决方案 我猜索引的目的是在本地拥有对象存储. 您不是需要在每个对象中更新列的SQL. 由于您更改对象结构(通过添加属性说说) 的确,商店中的所有对象都必须像您说的那样重写... emm好...另一个选择是与另一家商店更新数据库 包含类似于SQL或Uniqe键中的Forien键的内容,该键存储了其他存储的对象范围...在其中,每个OBJ项目也应
10 2023-05-22
编程技术问答社区
Dexie : 如何在嵌套对象中加入数组
我正在使用dexie indexeddb包装器,我正在尝试将对象添加到嵌套对象内部的现有数组中.该结构看起来类似于 { Name : 'John', age : 33, tags : { skill: [{ first: '.NET', second: 'JAVA', third: [{special1:'sleep'},{special2:'eat'}] }] } } 我尝试过多种方法来将对象special3:'运行'到技能.我的最后一次尝试看起来像这样 const pathObject = {}; const fullPath = 'result.tags.skill[3].third'; pathObject[fullPath] = {special3:'run'}; db.inspections.update(id, pathObject)
12 2023-05-22
编程技术问答社区
如何在IndexedDB中创建一个具有多个条件的查询
我有一个我想查询多个索引的商店.为了示例,让我们假设我有一个带有user_id index和create_date的消息存储(timestamp) 我知道如何通过ID查询用户: var range = IDBKeyRange.only('123'); store.index('user_id').openCursor(range).onsuccess= function(e){....}; 我知道如何按日期查询: var range = IDBKeyRange.lowerBound(Date.now()-24 * 60 * 1000)) store.index('create_data').openCursor(range).onsuccess = function(e){....}; 购买我无法弄清楚如何一起查询.我知道我可以在2个中使用JS解析结果,但是我想知道是否可以使用IDB进行此操作. 编辑 - 我想做的伪Query是 user_id=123
0 2023-05-22
编程技术问答社区
删除indexedDB对象存储中特定索引值的所有记录
对于具有[a,b]数组键的对象存储,其中a也是索引,是否有比在索引上打开光标的特定值的所有记录更有效的方法来删除所有记录. c1>并将每个记录删除为穿越光标的步骤? 是否有一种方法可以定义索引的关键范围,或者仅在a上定义b打开的值,以便可以删除该密钥范围的所有记录? 在这种特殊情况下,a是一个正整数,不包括零,b是一个正整数,包括零.从[n,0]到[n+1,0]的关键范围是否可以保证返回所有键等效到索引a=n,而不管b的值如何?例如,idbkeyrange.bound([2,0],[3,0],false,true)将返回索引a=2? 的所有键 上面的关键范围适用于我的测试用例,但是如果b不是整数,我想知道如何处理这种情况,这是一种特殊情况. 看来,以下内容不起作用,因为它仅删除具有2 key的记录.是否有这样的方法? i = transaction.objectStore( name ).index( 'a' ); i.delete( 2 ); 谢谢.
10 2023-05-22
编程技术问答社区
indexeddb/localforage的读取是由同步缓冲区解决的吗?
服用以下伪代码 localforageStore.setItem('foo', 'bar') .then(console.log('foo is persisted to disk')); localforageStore.getItem('foo') .then(v => console.info('foo is '+v)); // A, B or C? 是console.info: - a.保证显示" bar" b.保证显示"未定义" c.不确定 即.即使对光盘的写入是异步的,也会从内部到索引的dexeddb和/或localforage解决同步读取? 解决方案 我在更具体地说,再次查看localforage源,我可以看到setItem和getItem是索引DB Transactions周围的基本承诺包装器.交易完成后,这些包装器可以解决.这告诉我索引eddb是控制非阻滞行为的原因. . 因此,由于索引dexed
2 2023-05-22
编程技术问答社区
获取添加到索引数据库对象存储中的对象的ID
给定一个索引数据库,其中一个声明为: var objectStore = thisDb.createObjectStore("table", {keyPath: "id", autoIncrement: true}) 当我在添加请求中添加新项目时: var resp = objectStore.add(row) 如何在OnSuccess函数中获得此添加项目的新ID? resp.onsuccess = function(e) { /* code to get the id of the added item */} 解决方案 您可以在e.target.result中找到插入的键.
12 2023-05-22
编程技术问答社区
IndexedDB:用承诺升级?
刚刚使用indexedDB启动了我的第一个项目,我很困惑,试图创建一个用于首次使用时打开和升级数据库的系统.我想使用承诺(当前 angularjs a>服务,但我很灵活)给我一些保证,以保证捕获发生的任何错误,并减少有关故障模式的心理间接费用.我的要求是: 消费者调用一些功能以打开和升级返回Promise的数据库 该函数执行序列所需的所有升级/迁移.如果未发生错误,则可以通过与数据库的连接解决承诺 如果在任何阶段发生任何错误,则保证将拒绝错误 添加一个新的迁移/升级步骤就像定义执行升级的函数一样容易,所有其他并发问题均由"框架"照顾. 到目前为止我遇到的问题: 如果数据库不需要升级,则不会调用onupgraderequired回调(因此,在升级完成时解决的承诺如果DB不需要升级,将永远无法解决,并且通话代码不知道如果是在接线回调的情况下是这种情况) 如果一个升级依赖另一个升级(例如,您刚刚创建的商店填充商店),则必须等到调用其onsuccess回调 - 因此每个
16 2023-05-22
编程技术问答社区
在一个索引数据库中,如何从objectstore.put()返回自动增量的id?
使用ObjectStore.put()? 以下是我的代码: idb.indexedDB.addData = function (objectStore, data) { var db = idb.indexedDB.db; var trans = db.transaction([objectStore], READ_WRITE); var store = trans.objectStore(objectStore); var request = store.put(data); request.onsuccess = function (e) { //Success, how do I get the auto incremented id? }; request.onerror = function (e) { console.log("Error Adding: ", e);
10 2023-05-22
编程技术问答社区
InvalidStateError: Failed to execute 'transaction'on 'IDBDatabase': 数据库连接正在与ios safari关闭
我自2020年8月以来就发行了,我仍然不知道该如何复制, 我正在使用 dfahlander/dexie.js 使用browserindexeddb. 这是我如何使用dexie的示例: - import db from "./db"; import { useState, useEffect } from "react"; import axios from "axios"; import { useParams } from "react-router-dom"; export default function App() { const params = useParams(); const [storedRead, setStoredRead] = useState(); const [data,setData] = useState(); useEffect(() => { db.reads .ge
2 2023-05-22
编程技术问答社区
根据索引删除IndexedDB中的多条记录
我正在使用indexeddb,我有两个对象存储: etquip (代表不同的设备,主键 tagno )和 equipparts (表示一件设备的一部分,并具有基于标签号/序列号的索引一部分). 如果我删除 Equip 中的记录,我想删除 equipparts 中的所有记录 tagno Equip em>(就像" where equipparts.tagno = Equip.tagno"). 我的代码摘录: var tx = db.transaction(["equip", "equipParts"],"readwrite"); var estore = tx.objectStore("equip"); var pstore = tx.objectStore("equipParts"); var tagIndex = pstore.index("by_tagNo"); var pdestroy = tagIndex.openCursor(IDBKeyRange.only(
4 2023-05-22
编程技术问答社区
如何在 IndexedDB 中保存一个对象?
我想将API数据存储在浏览器的索引DB中.我本来会尝试本地存储,但它的限制为5MB,但我的JSON数据超过7MB.我想保存在索引中,以更快地访问.我想以JSON格式保存整个数据,但不知道如何设置索引DB的方案.从数据库中获取的数据是testdata const db =new Dexie("ReactDexie"); db.version(1).stores({ test:"++id title " //Dont Know how to set scheme here for my json object }) db.open().catch((err)=>{ console.log(err.stack || err) }) var transaction = db.transaction([testData], IDBTransaction.READ_WRITE)
2 2023-05-22
编程技术问答社区
索引数据库中的IN操作符等价
我想执行此查询 从属性中选择 *属性代码(" field1"," field2"," field3") 我如何在索引中实现这一目标 我尝试了这个东西 getData : function (indexName, params, objectStoreName) { var defer = $q.defer(), db, transaction, index, cursorRequest, request, objectStore, resultSet, dataList = []; request = indexedDB.open('test'); request.onsuccess = function (event) { db = request.result; transaction = db
4 2023-05-22
编程技术问答社区
无法读取未定义的IndexedDB的属性'事务'。
我正在使用IndexDB来创建用户的对象存储,但是在尝试添加用户时,我会在var request = db.transaction(['person'], 'readwrite')行上获得错误. 给出的错误是: " untureft typeError:无法阅读属性'交易' 不明确的 在add(test.js:32) 在test.js:45" 我的脚本看起来像这样: var request = window.indexedDB.open("connectDB", 1); request.onerror = function (event) { console.log('The database is opened failed'); }; var db; request.onsuccess = function (event) { db = request.result; console.log('The database is opened s
2 2023-05-22
编程技术问答社区
TransactionInactiveError: 在'IDBObjectStore上执行'add'失败: 该交易没有被激活
在此代码中,我会在store1.add上遇到问题时,当我在控制台中显示TransactionInactiveError: Failed to execute 'add' on 'IDBObjectStore': The transaction is not active时. 任何人都会帮助我,如果可能给我一些示例代码. function indexInitialization(){ var userDetails = indexedDB.open("dynamicServicess"); userDetails.onupgradeneeded = function(e) { console.log("Upgrading..."); var thisDB = e.target.result; var objectStore=thisDB.createObjectStore("servicess",{k
12 2023-05-22
编程技术问答社区
React Native是否支持索引数据库?
这个问题是在github上问,答案是"嘿,嘿,您听说过这个网站堆栈溢出吗?您应该在那里问问题! 所以我在这里问一个问题! 反应本机支持索引db? 当重构现有的Web应用程序支持react-native时,是否必须放弃索引的DB支持?或者,索引的DB开箱即用? 答案的原因是什么?索引DB是否仅仅是因为我们不在浏览器中,并且React Antial当前未实现该API?我们可以在React天然中多填充索引DB吗?或者,我们应该转向此平台的替代持久方法吗? 我要求这是技术领导,想知道react-native对我们的团队而言是一个简单或困难的过渡. 解决方案 否,到目前为止,React Native不支持IndexedDB. 用于React Antial中的持续存储该选项是: asyncstorage 为了存储对象,提供基于键值的异步API来存储数据.仅提供基本的get-put API,不适合搜索查询. 领域 :完全刚起步的文档的移动数据库,
20 2023-05-22
编程技术问答社区
文件系统访问API:是否可以存储已保存或加载的文件的fileHandle供以后使用?
在使用新的(ISH)文件系统系统访问api ,我想保存最近加载的文件的文件handles,以显示"最新文件..."菜单选项,让用户加载其中一个文件,而无需打开系统文件选择窗口. 本文有一段关于在indexeddb中存储文件handles的段落,并提到返回的手柄返回来自API是"可序列化",但没有任何示例代码,JSON.Stringify不会做. 文件句柄是可序列化的,这意味着您可以将文件句柄保存到索引db,或致电postmessage()以在同一顶级原点之间发送它们. 除了JSON以外,还有其他方法可以序列化手柄吗?我认为也许索引db会自动这样做,但这似乎也不起作用. 解决方案 这是一个最小示例,演示了如何存储和检索文件句柄(a FileSystemHandle 在indexedDB中(代码使用 idb-keyval 简短库): import { get, set } from 'https://unpkg.com/idb-keyval@5.0.2/dis
0 2023-05-22
编程技术问答社区
Windows 8应用程序中的IndexedDB位置
因此,我正在为Windows 8.1的Windows 8.1应用于索引db的Windows Metro应用程序. 我需要找到数据库的物理文件. 我尝试查看" C:\ Users \ \ AppData \ local \ Microsoft \ Internet Explorer \ Internexed db \",但无用. 我应该在哪里看? 解决方案 this this 建议: firefox: \\AppData\Roaming\ Mozilla\Firefox\Profiles\.default\IndexedDB chrome: \\AppData\Local\Google\ Ch
0 2023-05-16
编程技术问答社区
如何制作离线地图(使用小册子OSM),通过缓存?
我试图通过浏览器中的缓存(索引)制作离线地图.我知道这个概念是我在连接到Internet时首先下载并存储地图的瓷砖. 然后,我必须在逻辑上脱机加载图块. 但是,我无法弄清楚. 如何存储它们以及如何在逻辑上再次加载它们?我被困在这里.我正在使用leaflet API进行地图.如何实施? 解决方案 请参阅我对此的广泛研究: 和: -For-offline-slippy-map-tiles 您想做的事情是一个功能上的瓷砖层,可以从DB中获取东西: 顺便说一句,我现在正在测试pouchdb,这比原始索引更干净. 遵循我的结果: 其他解决方案 我有缓存示例实现 http://tbicr.github.com/Offlinemap/feflet/index.html 和代码用于存储使用的索引和webQL.存储的性能较低,未测试. 其他解决方案 我正在为解决相同问题的解决方案.从瓷砖器中存储瓷砖,并从flapletjs中加载它们.
4 2023-05-08
编程技术问答社区