本地存储数据源
介绍
本地存储数据源模块(datastore)用于保存 Token、账号密码等简单数据。它基于 core/util 的 PreferencesUtil 实现,通过 repository 对外提供数据访问能力。
数据源接口示例
文件位置:foundation/datastore/src/main/ets/datasource/token/TokenStoreDataSource.ets
ts
/**
* @file Token 本地存储数据源接口
*/
export interface TokenStoreDataSource {
/**
* 保存 Token
*/
setToken(token: string): Promise<void>;
/**
* 读取 Token
*/
getToken(): Promise<string>;
/**
* 清除 Token
*/
clearToken(): Promise<void>;
}数据源实现示例
文件位置:foundation/datastore/src/main/ets/datasource/token/TokenStoreDataSourceImpl.ets
ts
import common from "@ohos.app.ability.common";
import preferences from "@ohos.data.preferences";
import { ContextUtil, PreferencesUtil } from "@core/util";
import { TokenStoreDataSource } from "./TokenStoreDataSource";
/**
* @file Token 本地存储数据源实现
*/
export class TokenStoreDataSourceImpl implements TokenStoreDataSource {
private prefs: PreferencesUtil;
private static readonly PREFS_NAME: string = "token_store";
private static readonly KEY_TOKEN: string = "token";
constructor(context?: common.Context) {
const resolvedContext = context ?? ContextUtil.getUIAbilityCtx();
this.prefs = new PreferencesUtil(resolvedContext, TokenStoreDataSourceImpl.PREFS_NAME);
}
async setToken(token: string): Promise<void> {
await this.prefs.set(TokenStoreDataSourceImpl.KEY_TOKEN, token);
}
async getToken(): Promise<string> {
const value = await this.prefs.get(TokenStoreDataSourceImpl.KEY_TOKEN, "");
return typeof value === "string" ? value : "";
}
async clearToken(): Promise<void> {
await this.prefs.remove(TokenStoreDataSourceImpl.KEY_TOKEN);
}
}账号存储示例
文件位置:foundation/datastore/src/main/ets/datasource/account/AccountStoreDataSource.ets
ts
/**
* @file 账号本地存储数据源接口
*/
export interface AccountStoreDataSource {
/**
* 保存账号
*/
saveAccount(account: string): Promise<void>;
/**
* 读取账号
*/
loadAccount(): Promise<string>;
/**
* 保存密码
*/
savePassword(password: string): Promise<void>;
/**
* 读取密码
*/
loadPassword(): Promise<string>;
/**
* 清除账号信息
*/
clear(): Promise<void>;
}如何新增本地存储
- 在
foundation/datastore/src/main/ets/datasource/下新增业务文件夹。 - 编写数据源接口,定义读写方法。
- 编写数据源实现,使用
PreferencesUtil操作数据。 - 在
Index.ets中导出接口与实现。 - 在 repository 中使用该数据源。
注意事项
- 本地存储模块不直接给业务层使用,业务通过 repository 访问。
- 每个业务使用独立的 Preferences 文件(通过 PREFS_NAME 区分)。
- 敏感数据(如密码)建议加密后存储。