- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在改造一个旧项目并进行一些改进,但我似乎无法再弄清楚如何从 indexedDB 加载单个条目。我已经清除了数据库并进行了全新导入,我可以在 chrome 检查器资源部分中看到所有记录(包括我用于 entryID 的记录)。我试过提取各种 ID 号,我可以确认所有这些都在检查员的数据库中,它们都返回未定义。这是我正在使用的代码。
/*
This loads up a specific entry and fills in the #entry-details div with it's data. This div is placed overtop the search
content so that when it is closed the user remains exactly where they were and the search does not need to re-process.
*/
function getEntryDetails(){
var entryID = 193; // just for now, this will be grabbed from somewhere else later
// Where going to need a varible to store all this generated HTML in
var html = '';
// First we need to load up the indexedDB and get the record in question.
var db = indexedDB.open('pediaCache');
// lets get a couple of the errors out of the way.
db.onerror=function(e){html += 'There was an error loading the database.<br/>'+e;}
db.onblocked=function(e){html += 'Database access blocked.<br/>'+e;}
// Now for when things go the right way
db.onsuccess=function(e){
var db = e.target.result;
// Get the requested entry
console.log('Attempting to load entry ID '+entryID);
var transaction = db.transaction(['entries'],'readonly');
var objectStore = transaction.objectStore('entries');
var entry = objectStore.get(entryID);
entry.onerror = function(e) {
console.log('error');
console.log(e.target.result);
console.log(e);
};
entry.onsuccess = function(e) {
console.log('success');
console.log(e.target.result);
console.log(e);
};
}
}
这实际上只是对原始版本稍作修改的代码(因为这个功能是相同的,我实际上只修改了这里和导入器中的数据库和 ObjectStore 名称)。在 Chrome 中运行此代码(在我知道所有其他与数据库相关的功能完成后手动触发)甚至会触发“onsuccess”,只是结果未定义(好像该条目不在数据库中,但我再次检查过它在那里)。
根据要求,console.dir(e) 的内容:
{
"path": {
"length": 0
},
"cancelBubble": false,
"returnValue": true,
"srcElement": {
"readyState": "done",
"transaction": {
"onerror": null,
"oncomplete": null,
"onabort": null,
"error": null,
"db": {
"onversionchange": null,
"onerror": null,
"onclose": null,
"onabort": null,
"objectStoreNames": {
"0": "entries",
"length": 1
},
"version": 3,
"name": "pediaCache"
},
"mode": "readonly"
},
"source": {
"autoIncrement": false,
"transaction": {
"onerror": null,
"oncomplete": null,
"onabort": null,
"error": null,
"db": {
"onversionchange": null,
"onerror": null,
"onclose": null,
"onabort": null,
"objectStoreNames": {
"0": "entries",
"length": 1
},
"version": 3,
"name": "pediaCache"
},
"mode": "readonly"
},
"indexNames": {
"0": "title",
"length": 1
},
"keyPath": null,
"name": "entries"
},
"error": null
},
"defaultPrevented": false,
"timeStamp": 1420434102528,
"cancelable": false,
"bubbles": false,
"eventPhase": 0,
"currentTarget": null,
"target": {
"readyState": "done",
"transaction": {
"onerror": null,
"oncomplete": null,
"onabort": null,
"error": null,
"db": {
"onversionchange": null,
"onerror": null,
"onclose": null,
"onabort": null,
"objectStoreNames": {
"0": "entries",
"length": 1
},
"version": 3,
"name": "pediaCache"
},
"mode": "readonly"
},
"source": {
"autoIncrement": false,
"transaction": {
"onerror": null,
"oncomplete": null,
"onabort": null,
"error": null,
"db": {
"onversionchange": null,
"onerror": null,
"onclose": null,
"onabort": null,
"objectStoreNames": {
"0": "entries",
"length": 1
},
"version": 3,
"name": "pediaCache"
},
"mode": "readonly"
},
"indexNames": {
"0": "title",
"length": 1
},
"keyPath": null,
"name": "entries"
},
"error": null
},
"type": "success"
}
以及 objectStore 创建(需要升级)。
// We need to be able to update the db schema (or create it for that matter)
db.onupgradeneeded=function(e){
var db = e.target.result;
// In the future some of theme might want to get commented out...
postMessage({'status':'importing','message':'Upgrading local database.'});
// Check if the table is in there, if it's not then create it
console.log(db.objectStoreNames);
if(db.objectStoreNames.contains('entries')==false){
var db = db.createObjectStore('entries');
// Create the indexes so we can more easily search and sort and stuff (just one, we sort by name, everything else done by magic)
db.createIndex('title' ,'ZTITLE' ,{unique:false});
}
};
最佳答案
找到了问题所在,希望没有人会犯我犯过的同样简单的错误,但万一有人犯了这个问题并遇到了这个问题,这就是问题所在。
我添加到数据库中的键是一个字符串。我要求的 key 是一个整数。
不要像我一样,检查你的数据类型。
关于javascript - indexedDB objectStore.get() 总是返回 undefined,尽管在 DB 中有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27772947/
我一直在尝试使用Dart的IndexedDb包从IndexedDb实例中获得一个条目。但是我将getObject()称为文档说的返回Future *(我不知道的 future ),我没有任何Maps或
作为基本设置的示例,创建了一个索引。 db.onupgradeneeded = function(event) { var db = event.target.result; var st
我有一个选择框,我想用 objectStore 中的值自动填充它,因为我需要像这样迭代它:“从表中选择 COL1,其中 COL2 = 'myvalue'”,这是我的代码: var db; var re
我基本上有这段代码来生成一个带有一个 objectStore 的新数据库: DB.open_or_create({table: 'photos', key: 'url'}); 主要代码: var DB
在 this example ,作者使用以下行: var customerObjectStore = db.transaction("customers", "readwrite").object
有人可以告诉我下面的代码怎么了。主要问题是该行: fDbListAllClients; // this is not being "called" 似乎没有执行。 也可能有其他错误代码。我不担心
我想迭代 IndexedDB objectStore,获取结果并填充此选择框。 这是我的 HTML 这是我的 JavaScript function pop
我试图了解 indexedDB 的工作原理并编写了一个相当基本的站点访问者跟踪器。这是第一次工作。第一次加载页面时,一切都按预期进行。我可以看到数据已添加到我的 objectStore 中。 现在每次
我正在尝试连接到 Bluemix 中的对象存储服务。但是,我不断遇到异常(exception)。这是我的代码: public static void main(String[] args){
我有一个包裹在 dojo.data.ObjectStore 中的 dojo.store.Memory,然后我将其插入到 dataGrid 中。我想从商店中删除一个项目并更新网格。我已经尝试了所有我能想
谁能告诉我如何将新的对象库添加到现有的 indexeddb 实例中,该实例中有一个版本号。当我尝试创建新版本时,现有对象存储被删除。 我有一个版本“1”,它有大约 10 个包含数据的对象存储。当我尝试
对于我的 IndexedDB,我正在拉取各种 Ajax 请求,这些请求将向 objectStore 提供数据。由于事务是异步的,我应该如何链接 objectStores 的创建?我想这样做: 1- 在
第一次使用索引查询时间过长。 使用场景:移动端使用webview。 数据保存到indexedDb后,第一次打开页面查询速度极慢。 查询代码: var startTime = new Date().ge
我使用的是1.7.2当我将项目添加到对象存储时,我写 dataStore.newItem(data); 然后我尝试保存dataStore.save(),然后dijit.byId(gridId)._re
试图学习 IndexedDB 的概念和 API,我正在努力弄清楚如何使用 IDBObjectStore.add 方法为 objectStore 指定键。根据规范,第一个参数是值,第二个可选参数是键。当
所以我看到RestKit的引用中有一个init方法:objectStoreWithStoreFilename:inDirectory:usingSeedDatabaseName:managedObje
我只看到一个在模式更新时触发的事件,IndexedDB 中是否有任何数据更改的通知机制? 最佳答案 没有。至少,它不是规范的一部分。参见 http://lists.w3.org/Archives/Pu
我想知道什么时候拥有一个数据库与一个数据库具有多个对象存储是个好主意。我已经阅读了 Web 上的大多数教程并查看了 indexedDB 的规范,但找不到比较这些不同概念的好例子。有没有人有此类事情的具
我正在努力更新 indexedDB 中 objectStore 中的一系列四个条目。 这就是我想要实现的(伪代码): let myDatabase = indexedDB('myDatabase',
如何在使用 objectstore.put() 将记录插入 IndexedDB 后返回自动递增的 ID? 下面是我的代码: idb.indexedDB.addData = function (obje
我是一名优秀的程序员,十分优秀!