当前位置: 首页 > 知识库问答 >
问题:

如何从IndexedDB获取objectstore?

钦侯林
2023-03-14

我在我的应用程序上有indexedDb用于网络存储

我想获得以下代码的商店。

var store = myapp.indexedDB.db.transaction(['tree_nodes'],'readwrite').objectStore('tree_nodes'); 

它返回错误。我是众所周知的打开indexeddb数据库和版本更改。

错误为未捕获的TypeError:无法调用null的方法“transaction”

我被试着用断点。在这种情况下,它工作很好,没有错误。

我怎么去商店?请帮帮我.

提前道谢!

共有1个答案

锺离刚洁
2023-03-14

该错误可能是因为您的db变量为NULL。这几乎总是因为您试图将db存储在一个全局变量中作为回调的结果,然后在一个单独的函数中访问db变量,该函数不能保证只在db变量设置后才执行,这样浏览器就会发现您正在访问一个未初始化的变量。

解决方法很简单(但令人沮丧)。除非您想了解某个库对承诺和延迟对象的实现,否则不能以这种方式使用全局变量。相反,看看Deni给出的答案。使用回调并在回调函数中编写代码,而不是全局变量。“db”只能从回调request.onsuccess函数中访问,并且不是全局的。这就是为什么Deni的遗嘱起作用的原因。他的代码只会在db被保证初始化(不是null)时才会尝试访问。

由于您没有发布周围的代码(这一点很重要),因此您需要执行以下操作:

// I am an evil global variable that will not work as expected
myapp.indexedDB.db = 'DO NOT USE ME OR YOU WILL GET AN ERROR';

// I am a good function that only accesses an initialized db variable
function doit() {
    var request = window.indexedDB.open(......);
    request.onsuccess = function(event) {
        // Use this db variable, not your global one
        var db = event.target.result;

            // Note that you can also access the db variable using other means
        // here like this.result or request.result, but I like to use event.target
        // for clarity.

        // Now work with the db variable
        var store = db.transaction(['tree_nodes'],'readwrite').objectStore('tree_nodes');
        // do some more stuff with store....
    };
}
 类似资料:
  • indexeddb是一种新的HTML5概念,用于将数据存储在用户的浏览器中。 indexeddb比本地存储更强大,对需要存储大量数据的应用程序很有用。 这些应用程序可以更快地运行效率和加载。 为什么要使用indexeddb? W3C宣布Web SQL数据库是一个不推荐使用的本地存储规范,因此Web开发人员不应再使用此技术。 indexeddb是Web SQL数据库的替代方案,比旧技术更有效。 特点

  • 如何从(在清单中)使用java?

  • 我试图从索引值为0的indexeddb存储区获取所有记录,下面的代码在值为1,2,3,4等的情况下工作,但当它为0时,它不会返回。 有什么想法吗? 最诚挚的问候Lmac34

  • 一种方法是用新的名称创建一个新的objectStore,然后复制原来的数据,但是有没有方法修改现有的objectStore的名称呢?

  • 问题内容: 我正在使用蜡染来处理SVG图像。有什么办法可以从SVG文件中获取java.awt.image.BufferedImage吗? 我知道有一些转码器,我可以使用它们将SVG转码为PNG,然后使用ImageIO.read()加载该PNG,但是我不想拥有临时文件。 问题答案: 使用蜡染,如下所示:

  • 问题内容: 我正在使用HttpClient 4.1.2 那么,如何获取Cookie值? 问题答案: 请注意:第一个链接指向曾经在HttpClient V3中工作的内容。在下面找到与V4相关的信息。 这应该回答你的问题 http://www.java2s.com/Code/Java/Apache- Common/GetCookievalueandsetcookievalue.htm 以下与V4有关: