storage常见问题我要提意见
Storage模块管理应用本地数据存储区,用于应用数据的保存和读取。应用本地数据与localStorage、sessionStorage的区别在于数据有效域不同,前者可在应用内跨域操作,数据存储期是持久化的,并且没有容量限制。通过plus.storage可获取应用本地数据管理对象。
方法:
- clear: 清除存储数据
- clearAsync: 异步清除存储数据
- getAllKeys: 获取所有键名
- getAllKeysAsync: 异步获取所有键名
- getLength: 获取存储数据的个数
- getItem: 获取存储的键值
- getItemAsync: 异步获取存储的键值
- key: 获取键值对中指定索引值的key值
- setItem: 存储键值
- setItemAsync: 异步存储键值
- removeItem: 删除键值
- removeItemAsync: 异步删除键值
回调方法:
- StorageSuccessCallback: 本地数据存储操作成功的回调函数
- StorageErrorCallback: 本地数据存储操作失败的回调函数
权限:
5+功能模块(permissions)
{
// ...
"permissions":{
// ...
"Storage": {
"description": "本地存储,访问应用本地存储数据"
}
}
}
clear
清除存储数据
void plus.storage.clear();
说明:
清除存储的所有键名及键值。
参数:
无
返回值:
void : 无示例:
// 清除所有存储数据
function clearStorage() {
plus.storage.clear();
}
clearAsync
异步清除存储数据
void plus.storage.clearAsync(successCB, errorCB);
说明:
异步清除存储的所有键名及键值。 注意:HBuilderX2.6.6+版本支持。
参数:
- successCB:
(
StorageSuccessCallback
)
可选 清除操作成功回调
回调参数不包含属性。
- errorCB:
(
StorageErrorCallback
)
可选 清除操作失败回调
返回值:
void : 无示例:
// 异步清除存储数据
function clearAsync() {
plus.storage.clearAsync(function(){
console.log("clearAsync success");
}, function(e){
console.log("clearAsync failed: "+JSON.stringify(e));
});
}
getAllKeys
获取所有键名
var keys = plus.storage.getAllKeys();
说明:
获取存储的所有键名,如果没有存储数据则返回空数组。 注意:HBuilderX2.6.6+版本支持。
参数:
无
返回值:
Array[String] : 所有键名字符串数组。示例:
// 获取所有键名
function getAllKeys() {
var keys = plus.storage.getAllKeys();
console.log('keys length: "+keys.length);
}
getAllKeysAsync
异步获取所有键名
void plus.storage.getAllKeysAsync(successCB, errorCB);
说明:
异步获取存储的所有键名,如果没有存储数据则返回空数组。 注意:HBuilderX2.6.6+版本支持。
参数:
- successCB:
(
StorageSuccessCallback
)
可选 获取成功回调
回调参数包含以下属性:
- keys - 获取到所有键名的数组
- errorCB:
(
StorageErrorCallback
)
可选 获取失败回调
返回值:
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));
});
}
getLength
获取存储数据的个数
var foo = plus.storage.getLength();
参数:
无
返回值:
Number : 键值对的个数示例:
// 获取存储数据的个数
function storageCount() {
return plus.storage.getLength();
}
getItem
获取存储的键值
var foo = plus.storage.getItem(key);
说明:
通过键名获取对应存储的键值。
参数:
- key:
(
String
)
必选
键名
返回值:
String : 键名对应的键值,如果不存在则返回null。示例:
// 获取存储的键值
function getStorage() {
return plus.storage.getItem("test");
}
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));
});
}
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]);
}
}
setItem
存储键值
void plus.storage.setItem(key, value);
说明:
如果设置的键在数据存储中已经存在,则更新存储的键值。 存储的键和值没有容量限制,但过多的数据量会导致效率降低,建议单个键值数据不要超过10Kb。
参数:
- key:
(
String
)
必选
存储的键名
- value:
(
String
)
必选
存储的键值
返回值:
void : 无示例:
// 修改或添加键值(key-value)对数据到应用数据存储中
function setStorage() {
plus.storage.setItem("test","test with hbuilder!");
}
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));
});
}
removeItem
删除键值
void plus.storage.removeItem(key);
说明:
通过键名删除对应存储的键名及键值。
参数:
- key:
(
String
)
必选 键名
要删除的键名。
返回值:
void : 无示例:
// 删除键值
function removeStorage() {
plus.storage.removeItem("test");
}
removeItemAsync
异步删除键值
void plus.storage.removeItemAsync(key, successCB, errorCB);
说明:
通过键名异步删除对应存储的键名及键值。 注意:HBuilderX2.6.6+版本支持。
参数:
- key:
(
String
)
必选
删除的键名
- successCB:
(
StorageSuccessCallback
)
可选 删除操作成功回调
回调参数不包含属性。
- errorCB:
(
StorageErrorCallback
)
可选 删除操作失败回调
返回值:
void : 无示例:
// 异步删除键值
function removeItemAsync() {
plus.storage.removeItemAsync("test", function(){
console.log("removeItemAsync success");
}, function(e){
console.log("removeItemAsync failed: "+JSON.stringify(e));
});
}
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类型)获取错误描述信息。