如何在 Ionic 应用程序上保留 Typescript Map
How to persist a Typescript Map on a Ionic application
所以我的应用程序中有一些对象的属性之一是 Map<number,any[]>
。
目前我正在使用 localForage
进行持久化,当保存地图时,它使用 android 或 windows (浏览器模拟)将其很好地存储在 ionic serve
中,但不是ios 个。
它在我的 android 设备上也不起作用。
这是测试我观点的代码示例:
let myMap: Map<number,any[]> = new Map();
myMap.set(1,['banana','pimento']);
console.log(myMap);
localForage.config({});
localForage.setItem("myMap",myMap)
.then(()=>localForage.getItem("myMap")
.then(map => console.log(map))
);
在 android 和 windows(浏览器模拟)上它显示地图很好,在 ios 上则不然。区别在于 ios 一个使用 webSQL 数据库,而其他使用 indexedDB。
需要序列化吗?有没有更好的存储数据的方法来解决这个问题?
所以我找到了解决我的问题的方法,用以下方法序列化 Map
对象:
JSON.stringify(Array.from( myMap.entries()));
然后反序列化:
new Map<any,any>(JSON.parse(myMapFromStorage));
所以我的应用程序中有一些对象的属性之一是 Map<number,any[]>
。
目前我正在使用 localForage
进行持久化,当保存地图时,它使用 android 或 windows (浏览器模拟)将其很好地存储在 ionic serve
中,但不是ios 个。
它在我的 android 设备上也不起作用。
这是测试我观点的代码示例:
let myMap: Map<number,any[]> = new Map();
myMap.set(1,['banana','pimento']);
console.log(myMap);
localForage.config({});
localForage.setItem("myMap",myMap)
.then(()=>localForage.getItem("myMap")
.then(map => console.log(map))
);
在 android 和 windows(浏览器模拟)上它显示地图很好,在 ios 上则不然。区别在于 ios 一个使用 webSQL 数据库,而其他使用 indexedDB。
需要序列化吗?有没有更好的存储数据的方法来解决这个问题?
所以我找到了解决我的问题的方法,用以下方法序列化 Map
对象:
JSON.stringify(Array.from( myMap.entries()));
然后反序列化:
new Map<any,any>(JSON.parse(myMapFromStorage));