14-2 RN之安装 RealmJS

101 阅读2分钟

在这一节中,我们将学习如何安装和配置 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-cocoacore 文件),并且由于其服务器地址在国外,下载速度较慢或者会请求失败。如果遇到此问题,可以使用以下方法:

  1. 如果你有 VPN,直接翻墙即可解决问题。
  2. 如果没有 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 安装过程中遇到的常见问题。下一节,我们将继续实现数据存储和管理功能。