标签: localforage

localForage 使用 WebSQL web IndexedDB 可用

我正在使用 Ionic 框架构建 Cordova 应用程序。我使用angular-localForage作为应用程序持久存储的本地数据库。

在开发过程中,我正在 Windows 10 上使用 Google Chrome 45.0.2454.85 m 测试我的应用程序。angular-localForage 的版本为 1.2.3,localForage 的版本为 1.2.4。

我可以设置和检索数据没问题。要设置我使用的数据:

$localForage.setItem(myKey, myData).then(myCallbackFunction);
Run Code Online (Sandbox Code Playgroud)

根据docs,如果可用,localForage 应该使用 IndexedDB,而对于不可用的浏览器,则回退到 WebSQL。我可以通过查看 Chrome 开发人员工具中的资源看到它正在将我的数据存储在 WebSQL 中。

如果我将此代码放在我的控制器中,我会收到一条消息,指出 IndexedDB 可用:

if (!window.indexedDB) {
    window.alert("Your browser doesn't support a stable version of IndexedDB. Such and such feature will not be available.");
} else {
    window.alert("IndexedDB available.");
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我有 IndexedDB 可用时,为什么它在 Chrome 中使用 WebSQL?

javascript google-chrome indexeddb angularjs localforage

2
推荐指数
1
解决办法
1801
查看次数

React 应用程序中的 localForage:self 未定义

我正在尝试在reactjs 应用程序中使用localForage 。调用setItem然后getItem工作一次。用 设置的值setItem可以通过 正确恢复getItem。如果之后再次调用它们,TypeError则会抛出 a:

TypeError: self is undefined localforage.js:1012
Run Code Online (Sandbox Code Playgroud)

可以使用最小的reactjs应用程序来重现该错误,这里只是一个功能组件。
当组件被渲染时,它调用setItemgetItem。它会在单击按钮时重新渲染并setItem再次调用getItem。这会导致TypeError.

import React, { useState } from "react";
import { getItem, setItem } from "localforage";

function App() {
  const [state, setState] = useState(0);
  setItem("test", state).then(() => {
    console.log("used localForage");
  });

  getItem("test").then((val) => {
    console.log("got: ", val);
  });
  return (
    <button
      onClick={() => {
        setState(Math.floor(Math.random() * 10)); …
Run Code Online (Sandbox Code Playgroud)

reactjs localforage

2
推荐指数
1
解决办法
3209
查看次数

indexedDB会耗尽空间吗?

我正在将localforage与indexedDB驱动程序配合使用。我的indexedDB存储空间很大,但给我的印象是indexedDB从未真正用完空间,它只是使旧内容过期。

但是,在挂起60秒后,对indexedDB的大量请求失败,并显示错误:“ DOMException:事务由于不活动而超时。”。

如果我只是做一个简单的

function testWrite(n) {
  localforage.setItem(`test:${n}`, Math.random().toString(16).slice(2))
  .then((v) => console.log(x))
  .catch((err)=>console.log(err))
}
for (var x = 0; x < 10; x++) {
  testWrite(x)
}
Run Code Online (Sandbox Code Playgroud)

在指向我的Web应用的隐身窗口中,它可以正常工作。如果在非隐身窗口中执行相同的操作,则会发生超时。重要的是:即使将循环大小增加到某个较大的值(即使是在新的会话中),也会遇到相同的超时问题。因此,感觉有些地方有些不正确。

google-chrome blink indexeddb localforage

1
推荐指数
1
解决办法
701
查看次数

localForage存储容量

我在Cordova应用程序中使用localForage.

我想知道localforage的大小.基本上它被称为5mb限制.我的移动应用程序中将有超过100mb的数据.

var DefaultConfig = {
    description: '',
    driver: DefaultDriverOrder.slice(),
    name: 'localforage',
    // Default DB size is _JUST UNDER_ 5MB, as it's the highest size
    // we can use without a prompt.
    size: 4980736,
    storeName: 'keyvaluepairs',
    version: 1.0
};
Run Code Online (Sandbox Code Playgroud)

大小是4980736字节,这是4.9MB ..如果我增加到100mb,它支持吗?

local-storage web-sql indexeddb angular-local-storage localforage

1
推荐指数
1
解决办法
1670
查看次数

LocalForage,图像和Blob

我对LocalForage的使用有些困惑。我只想保存并从LocalForage检索图像,这就是我的方法。

function preload() {

    localforage.setDriver(localforage.LOCALSTORAGE).then(function() {

        lcl_images[0] = new Object();
        lcl_images[0].key = 'lclstorage_1';
        lcl_images[0].value = 'http://www.superga.com/tcnimg/S/02/S009TE0/XBS009TE0___949______.jpg';

        lcl_images[1] = new Object();
        lcl_images[1].key = 'lclstorage_2';
        lcl_images[1].value = 'https://mir-s3-cdn-cf.behance.net/project_modules/max_1200/2150fb35419617.56f6327b44e47.gif';

        for (var i = lcl_images.length - 1; i >= 0; i--) {

            var valore = lcl_images[i].value;
            localforage.setItem(lcl_images[i].key, lcl_images[i].value, function() {
                console.log('Saved: ' + valore);
            });
        }
    });
}

function use_preloaded_image() {

    for (var i = lcl_images.length - 1; i >= 0; i--) {

        var key = lcl_images[i].key;
        localforage.getItem(lcl_images[i].key, function(err, readValue) {
            console.log('Read: ', readValue); …
Run Code Online (Sandbox Code Playgroud)

javascript blob local-storage promise localforage

0
推荐指数
1
解决办法
1715
查看次数