问题标签 [localforage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1159 浏览

javascript - 使用 localforage 链式承诺

我在与承诺作斗争。我看到事件链是如何发生的,.then().then().then().then().then().then().then().then().then().then().then().then()但我不知道如何让它结束。我希望我可以做一个简单的:

但是,我无法让它发挥作用。我正在努力做到这一点。

请帮助我摆脱这种疯狂。

0 投票
0 回答
704 浏览

memory-leaks - Indexeddb 似乎没有释放内存

我正在使用localforage及其 IndexedDB 驱动程序来存储简单的键值对。但是我在尝试删除或更新值时遇到了问题。

每当我调用localforage.removeItem("existingKey")localforage.setItem("existingKey", "some value")使用现有条目的键时,都不会释放内存。

当使用 WebSQL 而不是 IndexedDB 时,不会发生该行为。

JsBin 上的示例(由于调用,仅适用于 Chrome navigator.storage

0 投票
2 回答
1142 浏览

vue.js - 如何遍历 IndexedDB 中的存储键

我将 localForage 用于 IndexedDB,我需要遍历存储键,但不是全部。我只需要遍历以名称“field-”开头的键。例如:字段 1、字段 2、字段 3、...

0 投票
1 回答
170 浏览

javascript - 在 Promise.all() 中包装 localForage setItem 调用

成功登录后,我想用新数据刷新我的 indexeddb 存储。数据刷新完成后,我想重定向到登陆页面。我的问题是我有 1000 多次调用 setItem 并且他们没有完成。

我对 Promise 还比较陌生,但是必须有一种方法可以将所有 setItem 调用放入可以返回的 Promise.all() 中。我怎样才能做到这一点?

0 投票
1 回答
602 浏览

javascript - 如何在ionic1中不使用promise的情况下获取localforage值

我有一个存储用户详细信息的本地草料。我需要在不使用使用承诺值的 localforage.getItem() 的情况下获取这些详细信息。即使我尝试过使用 $scope.localforagekey 但是当我关闭应用程序并再次打开时,值会被清除。谁能告诉我如何在不使用承诺的情况下从当地草料中获取价值。

0 投票
0 回答
325 浏览

cordova - 在 Cordova cli-8 上:localForage IndexedDB > QuotaExceededError

我正在使用cordova(cli-8.0.0)开发一个应用程序。一些数据(大约 3 到 7 MB)正在从服务器加载并存储在通过 localForage 访问的 indexedDB 数据库中。

几周以来,当用户智能手机上的免费存储空间低于一定的可用空间时,我在某些设备上收到了 QuotaExceededError。现在需要大约 2 GB 的免费智能手机存储空间来使用 localForage 执行简单的 setItem-Operation(通过尝试存储简单字符串进行测试)。

由于实际需要的空间远不及 2 GB,我不知道为什么操作不成功。

我会非常感谢任何提示或想法。

0 投票
0 回答
509 浏览

javascript - 如何从 localforage 获取数据?

我有一个购物车服务,我想在其中存储和获取物品。但是我可以存储get返回一个承诺。

我如何获取数据?如何解决承诺?我以前从未使用过它们。

如果我打印,那很好,但我需要在外面使用它:

有人能帮助我吗?

0 投票
1 回答
1197 浏览

response - 来自 IDB 而不是缓存的工作箱脱机响应

我正在使用服务人员构建一个 vueJs 应用程序。我决定使用带有 InjestManifest 方法的 Workbox 来拥有自己的路线。

在线获取时: 1- 通过网络回答 2- 将正文写入 IDB(通过 localforage) 3- 发回响应

这里一切正常,sw 拦截了 fetch 并返回适当的响应,IDB 包含正确的详细信息。在线时发送回 fecth 的响应:响应 {type:“cors”,url:“ http://localhost:3005/api/events ”,重定向:false,状态:200,ok:true,...}

问题是当我离线时。我的意图是连接到 Locaforage 并检索内容并建立响应。问题是 Fetch 认为此响应不合适,然后拒绝它。Console.log 确认 sw 中的 .catch 正在工作,但看起来它发送的响应被拒绝了。这是我在离线时发送回获取的响应的 console.log;响应 {type: "default", url: "", redirected: false, status: 200, ok: true, ...}

我不知道 fetch 是否不满意,因为响应的 url 与请求上的不同,但工作箱应该允许使用其他响应而不是来自缓存或 fetch 的响应。

这是代码

我真的被困在那里,因为工作箱上的所有文档都与利用缓存有关。我正在利用 localforage,因为它支持使离线功能正常工作所需的 Promise。

谢谢

0 投票
2 回答
1663 浏览

redux - redux saga yield call throw error TypeError: Cannot read property 'ready' of null

我有一个应用程序,每次用户登录时都会加载“收藏夹”。数据是使用 localforage 从 IndexedDB 加载的。当应用程序重新启动时(窗口刷新后),它可以完美运行。当我注销并登录(root saga 任务运行)时,加载“收藏夹”数据的调用会引发错误:

TypeError:无法读取 null 的属性“就绪”

在步骤:

传奇代码提取:

我将不胜感激任何建议。

我添加了 console.log 行以查看没有 saga 调用的结果:

每次 Promise 都会返回正确的值:

0 投票
2 回答
1313 浏览

google-chrome - 即使保存的数据没有改变,IndexedDB 的大小也会不断增长

我在我的 Web 应用程序中使用Redux PersistLocalForage 。我有一系列在登录时触发的操作,这些操作会更新有关用户的一些数据。触发所有操作并将数据以 JSON 格式保存在 indexedDB 后的 IndexedDB 大小约为 1.4Mb。

初始存储

但是,如果我刷新页面从而再次触发操作,或者如果注销并重新登录,即使 IndexedDB 中的值没有改变(我已经使用 JSON diff 工具仔细检查了),存储的大小也会继续增长。最终,Chrome 会在增长几 MB 后清除其中的一部分,但不会恢复到最初的正确大小。

存储容量大

IndexedDB JSON 完全相同,没有任何差异,但大小差异很大。有谁知道为什么会发生这种情况,我该如何预防?我还想知道 Chrome 何时/多久清除一次让我的 IndexedDB 混乱的任何数据,但我找不到任何参考资料。

非常感谢