当前位置: 首页 > 文档资料 > Dcloud HTML5+ 规范 >

storage

优质
小牛编辑
130浏览
2023-12-01

Storage模块管理应用本地数据存储区,用于应用数据的保存和读取。应用本地数据与localStorage、sessionStorage的区别在于数据有效域不同,前者可在应用内跨域操作,数据存储期是持久化的,并且没有容量限制。通过plus.storage可获取应用本地数据管理对象。

方法:

回调方法:

权限:

5+功能模块(permissions)


{
// ...
"permissions":{
	// ...
	"Storage": {
		"description": "本地存储,访问应用本地存储数据"
	}
}
}
			

clear

清除存储数据


void plus.storage.clear();
				

说明:

清除存储的所有键名及键值。

参数:

返回值:

void : 无

示例:


// 清除所有存储数据
function clearStorage() {
	plus.storage.clear();
}
				

uni-app使用plus注意事项

clearAsync

异步清除存储数据


void plus.storage.clearAsync(successCB, errorCB);
				

说明:

异步清除存储的所有键名及键值。 注意:HBuilderX2.6.6+版本支持。

参数:

返回值:

void : 无

示例:


// 异步清除存储数据
function clearAsync() {
	plus.storage.clearAsync(function(){
		console.log("clearAsync success");
	}, function(e){
		console.log("clearAsync failed: "+JSON.stringify(e));
	});
}
				

uni-app使用plus注意事项

getAllKeys

获取所有键名


var keys = plus.storage.getAllKeys();
				

说明:

获取存储的所有键名,如果没有存储数据则返回空数组。 注意:HBuilderX2.6.6+版本支持。

参数:

返回值:

Array[String] : 所有键名字符串数组。

示例:


// 获取所有键名
function getAllKeys() {
	var keys = plus.storage.getAllKeys();
	console.log('keys length: "+keys.length);
}
				

uni-app使用plus注意事项

getAllKeysAsync

异步获取所有键名


void plus.storage.getAllKeysAsync(successCB, errorCB);
				

说明:

异步获取存储的所有键名,如果没有存储数据则返回空数组。 注意:HBuilderX2.6.6+版本支持。

参数:

返回值:

void : 无

示例:


// 异步获取所有键名
function getAllKeysAsync() {
	plus.storage.getAllKeysAsync(function(e){
		var keys = e.keys;
		console.log('keys length: "+keys.length);
	}, function(e){
		console.log("clearAsync failed: "+JSON.stringify(e));
	});
}
				

uni-app使用plus注意事项

getLength

获取存储数据的个数


var foo = plus.storage.getLength();
				

参数:

返回值:

Number : 键值对的个数

示例:


// 获取存储数据的个数
function storageCount() {
	return plus.storage.getLength();
}
				

uni-app使用plus注意事项

getItem

获取存储的键值


var foo = plus.storage.getItem(key);
				

说明:

通过键名获取对应存储的键值。

参数:

  • key: ( String ) 必选

    键名

返回值:

String : 键名对应的键值,如果不存在则返回null。

示例:


// 获取存储的键值
function getStorage() {
	return plus.storage.getItem("test");
}
				

uni-app使用plus注意事项

getItemAsync

异步获取存储的键值


void plus.storage.getItemAsync(key, successCB, errorCB);
				

说明:

通过键名异步获取对应存储的键值,获取成功通过successCB回调返回键值,失败则通过errorCB返回错误。 注意:HBuilderX2.6.6+版本支持。

参数:

  • key: ( String ) 必选

    键名

  • successCB: ( StorageSuccessCallback ) 可选 获取键值成功回调

    回调参数包含以下属性:

    • data - 获取到键名对应的键值

  • errorCB: ( StorageErrorCallback ) 可选 获取键值失败回调

    如果获取的键名不存在,则会触发失败回调。

返回值:

void : 无

示例:


// 异步获取存储的键值
function getStorageAsync() {
	plus.storage.getItemAsync("test", function(e){
		var data = e.data;
		console.log("getItemAsync success: "+data);
	}, function(e){
		console.log("getItemAsync failed: "+JSON.stringify(e));
	});
}
				

uni-app使用plus注意事项

key

获取键值对中指定索引值的key值


var foo = plus.storage.key(index);
				

参数:

  • index: ( Number ) 必选 存储键值的索引

返回值:

String : 指定索引值的key值,如果不存在则返回null。

示例:


// 获取键值对中指定索引值的key值
function enumValueByIndex() {
	var keyNames=[];
	var values=[];
	var numKeys=plus.storage.getLength();
	for(var i=0; i<numKeys; i++) {
		keyNames[i] = plus.storage.key(i);
		values[i] = plus.storage.getItem(keyNames[i]);
	}
}
				

uni-app使用plus注意事项

setItem

存储键值


void plus.storage.setItem(key, value);
				

说明:

如果设置的键在数据存储中已经存在,则更新存储的键值。 存储的键和值没有容量限制,但过多的数据量会导致效率降低,建议单个键值数据不要超过10Kb。

参数:

  • key: ( String ) 必选

    存储的键名

  • value: ( String ) 必选

    存储的键值

返回值:

void : 无

示例:


// 修改或添加键值(key-value)对数据到应用数据存储中
function setStorage() {
	plus.storage.setItem("test","test with hbuilder!");
}
				

uni-app使用plus注意事项

setItemAsync

异步存储键值


void plus.storage.setItemAsync(key, value, successCB, errorCB);
				

说明:

如果设置的键在数据存储中已经存在,则更新存储的键值。 存储的键和值没有容量限制,但过多的数据量会导致效率降低, 异步存储不阻塞js运行,但也不应该传入过大数据,建议单个键值数据不要超过100Kb。 注意:HBuilderX2.6.6+版本支持。

参数:

  • key: ( String ) 必选

    存储的键名

  • value: ( String ) 必选

    存储的键值

  • successCB: ( StorageSuccessCallback ) 可选 存储键值成功回调

    回调参数不包含属性。

  • errorCB: ( StorageErrorCallback ) 可选 存储键值失败回调

返回值:

void : 无

示例:


// 异步存储键值
function setStorageAsync() {
	plus.storage.setItemAsync("test", "test with HBuilderX", function(){
		console.log("setItemAsync success");
	}, function(e){
		console.log("setItemAsync failed: "+JSON.stringify(e));
	});
}
				

uni-app使用plus注意事项

removeItem

删除键值


void plus.storage.removeItem(key);
				

说明:

通过键名删除对应存储的键名及键值。

参数:

  • key: ( String ) 必选 键名

    要删除的键名。

返回值:

void : 无

示例:


// 删除键值
function removeStorage() {
	plus.storage.removeItem("test");
}
				

uni-app使用plus注意事项

removeItemAsync

异步删除键值


void plus.storage.removeItemAsync(key, successCB, errorCB);
				

说明:

通过键名异步删除对应存储的键名及键值。 注意:HBuilderX2.6.6+版本支持。

参数:

返回值:

void : 无

示例:


// 异步删除键值
function removeItemAsync() {
	plus.storage.removeItemAsync("test", function(){
		console.log("removeItemAsync success");
	}, function(e){
		console.log("removeItemAsync failed: "+JSON.stringify(e));
	});
}
				

uni-app使用plus注意事项

StorageSuccessCallback

本地数据存储操作成功的回调函数


void onSuccess( event ) {
	// get event data
}
				

说明:

不同接口触发的成功回调参数event包含的属性存在差异,具体参考对应的接口描述说明。

参数:

  • event: ( Object ) 可选 回调参数

    回调参数包含的属性由调用接口决定,具体参考对应的接口描述说明。

返回值:

void : 无

StorageErrorCallback

本地数据存储操作失败的回调函数


function void onError(Exception error) {
	// Handle error
	var code = error.code; // 错误编码
	var message = error.message; // 错误描述信息
}
				

说明:

包括以下错误:

  • -1 - 内部错误
  • -2 - 存储已超上限 无法正常存储
  • -3 - 没有找到相同key的存储记录

参数:

  • error: ( Exception ) 必选 错误回调信息

    可通过error.code(Number类型)获取错误编码; 可通过error.message(String类型)获取错误描述信息。

返回值:

void : 无