存储数据丢失的原因是什么?

时间:2018-08-16 06:36:24

标签: ionic2 ionic-storage

存储到目前为止正常使用的应用程序中,所有数据在更新中均已消失。 @ ionic /存储版本或ionic版本没有任何变化。

此外,在数据消失后创建的数据将正常保存。 在什么条件下初始化Storaage数据?

"@ionic/storage": "2.0.0"


--- Ionic Info ---

Ionic:

   ionic (Ionic CLI)  : 4.0.1 (C:\Users\xxxxx\AppData\Roaming\npm\node_modules\ionic)
   Ionic Framework    : ionic-angular 3.9.2
   @ionic/app-scripts : 3.1.11

Cordova:

   cordova (Cordova CLI) : not installed
   Cordova Platforms     : android 6.3.0, ios 4.5.4

System:

   Android SDK Tools : 26.1.1
   NodeJS            : v8.11.3 (C:\Program Files\nodejs\node.exe)
   npm               : 6.2.0
   OS                : Windows 7

Environment:

   ANDROID_HOME : C:\Users\xxxxx\AppData\Local\Android\Sdk

1 个答案:

答案 0 :(得分:0)

Ionic Storage是localForage库的“包装器”,它在后台(通过“驱动程序”)包装了不同的持久性解决方案。如果离子存储在设备上以混合方式(cordova应用程序)运行,则唯一的“保证”持久性是SQLite。其他基于浏览器的驱动程序(indexeddb或websql)根据特定的浏览器允许保留数据。而且这种基于浏览器的持久性并不能真正“保证”,因为它受以下条件的约束:

  • 浏览器报价(浏览器允许网站使用多少磁盘空间 存储)
  • 浏览器模式(例如可以阻止localStorage的隐私模式)
  • 浏览器需要为另一个网站使用空间(例如,它可以开始从您的应用中删除数据)

总的来说,除非您使用SQLite-将此离子存储视为某种持久性缓存...

还请记住,Ionic Storage可以在某一时刻使用一种可用的存储类型,然后在条件发生变化时切换到另一种存储方式,从而使您的数据在websql中仍然可用,但由于应用程序可能已切换到indexeddb而无法访问。为了避免严格控制可用的驱动程序及其优先级/初始化的顺序,