【问题标题】:Ionic Storage unwanted changing离子存储不必要的变化
【发布时间】:2018-05-16 11:32:53
【问题描述】:

我在使用 Ionic Storage 时遇到问题。

当我登录我的应用程序时,它会保存一些配置对象。 我最后一次检查是在 IndexedDb 上。

但如果我保存任何文件更改或只是刷新页面,有时它会从 IndexedDb 切换到 Web SQL...

我的所有数据都“丢失”了,因为数据库是全新的。

任何人都知道它为什么会发生或如何解决。

这是我的app.module存储设置

IonicStorageModule.forRoot({
    name: '__cds',
    driverOrder: ['indexeddb', 'sqlite', 'websql']
})

我担心当我编译成一个应用程序时会对此产生影响。 到目前为止,我只在浏览器上开发

我就是这样设置的

//response 是我从 http 调用接收到的对象

this.storage.set('cds', response).then(() => {
    this.goHome();
});

我就是这样理解的

this.storage.get('cds').then(cds => {
    this.variable = JSON.parse(cds);
});

看,这不是“维护”单个数据库上的存储

【问题讨论】:

  • 如果您提供访问存储和创建存储的代码会很有帮助。
  • @Malcor 等一下,伙计!
  • 其他浏览器会出现这种情况吗?
  • 所以你在手机上测试过,还是一样的问题?我正在尝试确定这是您使用的浏览器的错误还是未知的副作用。
  • 如果您使用的是 chrome,当处于开发模式时,请检查您的 network 选项卡,查看 cache 是否已禁用。如果它被禁用,它可能会擦除你的本地存储。

标签: ionic-framework ionic2 ionic3


【解决方案1】:

原来问题是 Chrome Web 开发工具的一个“功能”(我认为)。 你看,当我刷新应用程序时,我使用的是 Toggle Device Toolbar

这有助于网页设计。如果您注意到这个标记为 Responsive

由于许多其他原因,我突然将标签更改为 Iphone 尺寸之一

我不知道它为什么会这样工作,但这个小改动不仅仅是改变视口大小......

使用的存储库也发生了变化,我的问题开始了。

就生产应用而言,这不是问题,因为我认为用户无法在 Chrome 开发工具上“切换”视口大小......

就是这样。感谢马可的帮助!!

【讨论】:

  • 2020年12月这个问题依然存在!即使通过开发工具清除站点数据也不能解决问题。 It looks like that indexeddb can't be used when one of the predefined iPhones sizes is selected.所选设备 iPhone:(错误错误:未捕获(承诺):错误:未找到可用的存储方法。错误:未找到可用的存储方法。)因此,当您从任何其他尺寸开始,而不是 iPhone 之一时,您正在使用indexeddb,然后当您切换到 iPhone 尺寸时,localForage 正在切换到 webSQL/sql,基于配置。在这一点上,你的存储被搞砸了。
  • 截至 2021 年 3 月 10 日,这仍然是 Google Chrome 的一个问题。我收到了上述错误和意外行为。当然,我认为问题出在我的代码中,但可惜不是。我希望其他人在寻找这个答案的过程中不会像我一样充满挫败感!
猜你喜欢
  • 1970-01-01
  • 2018-02-19
  • 1970-01-01
  • 2017-09-18
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
  • 2019-11-09
相关资源
最近更新 更多