K-V 数据存储
{ "name": "blueos.storage.storage" }import storage from '@blueos.storage.storage' 或 const storage = require('@blueos.storage.storage')最小可运行示例
Section titled “最小可运行示例”下面的示例在页面初始化时读取已保存的昵称,点击按钮写入新值,读写结果都显示在页面上。
manifest.json(features 片段)
Section titled “manifest.json(features 片段)”{ "features": [{ "name": "blueos.storage.storage" }]}首页 src/pages/Home/index.ux
Section titled “首页 src/pages/Home/index.ux”<script> import storage from '@blueos.storage.storage'
export default { data: { nickname: '', status: '读取中…', }, onInit() { this.loadNickname() }, onNicknameChange(evt) { this.nickname = evt.value }, loadNickname() { storage.get({ key: 'nickname', default: '', success: (data) => { this.nickname = data this.status = data ? '读取成功' : '暂无已保存的昵称' }, fail: (data, code) => { this.status = `读取失败:${data}(错误码 ${code})` }, }) }, saveNickname() { storage.set({ key: 'nickname', value: this.nickname, success: () => { this.status = '保存成功' }, fail: (data, code) => { this.status = `保存失败:${data}(错误码 ${code})` }, }) }, }</script>
<template> <div class="flex flex-col items-center justify-center w-full h-full"> <text class="text-white text-3xl">昵称:{{ nickname }}</text> <input class="w-full text-white mt-20" type="text" value="{{nickname}}" placeholder="输入昵称" onchange="onNicknameChange" /> <input class="text-white mt-20" type="button" value="保存" onclick="saveNickname" /> <text class="text-white text-2xl mt-20">{{ status }}</text> </div></template>
<style>@tailwind utilities;</style>get 与 set 都是异步接口,必须提供 fail 回调并把失败信息反馈给用户。若需要同步读取,可使用 storage.getSync。
storage.get(OBJECT)
Section titled “storage.get(OBJECT)”读取存储内容
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | 索引 |
| default | String | 否 | 如果 key 不存在,返回 default。如果 default 未指定,返回长度为 0 的空字符串 |
| success | Function | 否 | 成功回调 |
| fail | Function | 否 | 失败回调 |
| complete | Function | 否 | 执行结束后的回调 |
success 返回值:
Section titled “success 返回值:”key 对应的存储内容
storage.get({ key: 'A1', success: function (data) { console.log('handling success') }, fail: function (data, code) { console.log(`handling fail, code = ${code}`) },})storage.getSync(OBJECT)
Section titled “storage.getSync(OBJECT)”同步读取存储内容
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | 索引 |
| 参数名 | 类型 | 说明 |
|---|---|---|
| value | String | Boolean | Number | Object | Array | key 对应的存储内容 |
const value = storage.getSync({ key: 'A1' })storage.set(OBJECT)
Section titled “storage.set(OBJECT)”修改存储内容
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | 索引 |
| value | String | Boolean | Number | Object | Array | 否 | 新值。如果新值是长度为 0 的空字符串,会删除以 key 为索引的数据项 |
| success | Function | 否 | 成功回调 |
| fail | Function | 否 | 失败回调 |
| complete | Function | 否 | 执行结束后的回调 |
storage.set({ key: 'A1', value: 'V1', success: function (data) { console.log('handling success') }, fail: function (data, code) { console.log(`handling fail, code = ${code}`) },})storage.set({ key: 'A1', value: true, success: function (data) { console.log('handling success') }, fail: function (data, code) { console.log(`handling fail, code = ${code}`) },})storage.set({ key: 'A1', value: 18, success: function (data) { console.log('handling success') }, fail: function (data, code) { console.log(`handling fail, code = ${code}`) },})storage.set({ key: 'A1', value: { name: '李四', age: 18 }, success: function (data) { console.log('handling success') }, fail: function (data, code) { console.log(`handling fail, code = ${code}`) },})storage.set({ key: 'A1', value: [18, 20], success: function (data) { console.log('handling success') }, fail: function (data, code) { console.log(`handling fail, code = ${code}`) },})storage.clear(OBJECT)
Section titled “storage.clear(OBJECT)”清空存储内容
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| success | Function | 否 | 成功回调 |
| fail | Function | 否 | 失败回调 |
| complete | Function | 否 | 执行结束后的回调 |
storage.clear({ success: function (data) { console.log('handling success') }, fail: function (data, code) { console.log(`handling fail, code = ${code}`) },})storage.delete(OBJECT)
Section titled “storage.delete(OBJECT)”删除存储内容
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | 索引 |
| success | Function | 否 | 成功回调 |
| fail | Function | 否 | 失败回调 |
| complete | Function | 否 | 执行结束后的回调 |
storage.delete({ key: 'A1', success: function (data) { console.log('handling success') }, fail: function (data, code) { console.log(`handling fail, code = ${code}`) },})storage.key(OBJECT)
Section titled “storage.key(OBJECT)”返回存储中某个 index 的键名
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| index | Number | 是 | 要查询的键名对应的索引 |
| success | Function | 否 | 成功回调 |
| fail | Function | 否 | 失败回调 |
| complete | Function | 否 | 执行结束后的回调 |
success 返回值:
Section titled “success 返回值:”index 对应的键名
storage.key({ index: 1, success: function (data) { console.log(`handling success, key = ${data}`) }, fail: function (data, code) { console.log(`handling fail, code = ${code}`) },})| 名称 | 参数类型 | 是否可读 | 是否可写 | 描述 |
|---|---|---|---|---|
| length | Number | 是 | 否 | 存储里的数据项的数量 |
let length = storage.length通用 fail 回调参数定义
Section titled “通用 fail 回调参数定义”| 属性 | 类型 | 说明 |
|---|---|---|
| data | string | 接口失败信息描述 |
| code | FailCodeEnum | 接口失败业务码 |
FailCodeEnum
Section titled “FailCodeEnum”| 属性 | 说明 |
|---|---|
| 302 | 存储空间不足 |