热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

尽管结果是DB,但indexedDBobjectStore.get()始终返回undefined

如何解决《尽管结果是DB,但indexedDBobjectStore.get()始终返回undefined》经验,为你挑选了1个好方法。

我一直在重新编写一个较旧的项目并进行一些改进,我似乎无法弄清楚如何从indexedDB加载单个条目.我已经清除了数据库并完成了新的导入,我可以在chrome检查器资源部分中看到所有记录(包括我用于entryID的记录).我试过拉各种ID号码,我可以确认这些号码都在检查员的数据库中,它们都返回undefined.这是我正在使用的代码.

/*
    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.
'+e;} db.Onblocked=function(e){html += 'Database access blocked.
'+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创建(onupgradeneeded).

    // 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});

        }

    };

Phillip Gooc.. 17

发现问题,希望没有人犯下我做过的同样简单的错误,但万一有人这样做,并且遇到这个问题,这就是问题所在.

我在数据库中添加的密钥是一个字符串.我要求的关键是一个int.

不要像我一样,检查你的数据类型.



1> Phillip Gooc..:

发现问题,希望没有人犯下我做过的同样简单的错误,但万一有人这样做,并且遇到这个问题,这就是问题所在.

我在数据库中添加的密钥是一个字符串.我要求的关键是一个int.

不要像我一样,检查你的数据类型.


推荐阅读
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
author-avatar
ycy1873187
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有