快应用如何使用storage存储数组

在快应用开发中遇到需要保存数据到本地的需求。在查看快应用开发文档时,发现存储方式只有数据存储和文件存储,而数据存储只有system.storage 方法,且存储的数据类型只有String类型。不像android原生开发中,除了文件存储,还有SharedPreferences简单数据存储,和sqlite 数据库的存储方式。

而我本次开发中需要存储像数据库那样的数据,数据量不大,用不找文件存储,但也不小,不是简短一个字符串能够搞定。

 

查看system.storage的介绍文档,发现其对存储值 String的lenth并没有限制,那是否可以把js数据转换成String存储呢?于是尝试用storage来完成数组的存储,实验结果是可行的。下面示例代码中的数组中每一元素包含一个id和一个链接url。

 

使用storage前一定要导入对应的接口模块

import storage from '@system.storage'

 

本页面参数定义

private: {

    gameId:"",

    shoucangList:[],

},

  • 将元素加入数组,并转换成String保存

    var item = {};

    item["id"]= this.gameId;

    item["url"] = this.imgurl;

    try {

      this.shoucangList.push(item);

      storage.set({key: 'shoucang', value: JSON.stringify(this.shoucangList)});

      console.log("savedata success: " + JSON.stringify(this.shoucangList));

    } catch(e) {

      console.log("savedata failed with exception:" + e.message + '发生在' + e.lineNumber + '行');

    }

   

  • 将指定元素删除

for (var item in this.shoucangList) {

      if (this.shoucangList[item].id === this.gameId) {

        this.shoucangList.splice(item, 1);

        storage.set({key: 'shoucang',value: JSON.stringify(this.shoucangList)});

        console.log("cancelShouCang success: " + JSON.stringify(this.shoucangList));

      }

    }

 

  • 读取storage全部数据

     const that = this;

     storage.get({key:"shoucang",

     success: function (data) {

        console.log('storage get data success:' + data);

        if (!(typeof data === "undefined" || data === null || data === "")) {

          that.shoucangList = JSON.parse(data);

        } else {

          that.shoucangList = [];

        }

  

     },

     fail: function (data, code) {

        console.log(`storage get data fail, code = ${code}`),

         that.shoucangList = [];

     }

   });

 

你可能感兴趣的:(快应用)