在这一节中,我们将学习如何安装和配置 realmjs,并在项目中使用它进行本地数据存储。
1. 安装 realmjs
首先,我们使用以下命令安装 realm 库:
yarn add realm
realm 是一个涉及原生功能的库,因此需要重新安装应用。可以使用以下命令分别安装 Android 和 iOS 版本:
yarn android
对于 iOS,我们需要在项目的 ios 文件夹中执行 pod install:
cd ios && pod install --verbose
解决 iOS 安装问题
在 iOS 安装过程中,pod install 可能会卡在下载一些大的包(如 sync-cocoa 和 core 文件),并且由于其服务器地址在国外,下载速度较慢或者会请求失败。如果遇到此问题,可以使用以下方法:
- 如果你有 VPN,直接翻墙即可解决问题。
- 如果没有 VPN,可以手动下载对应版本的包。进入
node_modules/realm/scripts/download-realm,并打印临时保存的地址:
console.log(destination);
将下载的包复制到该临时地址中,并重试安装:
pod install --verbose
yarn ios
2. 配置 Realm 数据库
在 config 目录下创建 realm.ts 文件,并定义需要存储的数据结构。以下是一个示例:
import Realm from 'realm';
export interface IProgram {
id: string;
title?: string;
thumbnailUrl?: string;
currentTime?: number;
duration?: number;
}
class Program {
currentTime = 0;
duration = 0;
static schema = {
name: 'Program',
primaryKey: 'id',
properties: {
id: 'string',
title: 'string',
thumbnailUrl: 'string',
currentTime: { type: 'double', default: 0 },
duration: { type: 'double', default: 0 },
},
};
// 使用 getter 声明 rate 属性
get rate() {
return this.duration > 0
? Math.floor(((this.currentTime * 100) / this.duration) * 100) / 100
: 0;
}
}
const realm = new Realm({ schema: [Program] });
export function saveProgram(data: any) {
try {
realm.write(() => {
// 设置为 true 时,表示是修改操作,realm 会根据 id 判断是新增还是修改
realm.create('Program', data, true);
});
} catch (e) {
console.log('保存失败');
}
}
export default realm;
3. 总结
在这一节中,我们成功安装了 realmjs,并在项目中配置了数据库用于存储音频播放记录。我们也讨论了如何解决 iOS 安装过程中遇到的常见问题。下一节,我们将继续实现数据存储和管理功能。