12.React Native数据本地存储-Realm

目录

 

1.Realm是什么?

2.使用的前提条件

3.Realm配置

3.1Realm配置

4.Realm使用(增删改查)

4.1Realm支持的数据类型

4.2打开Realm

4.3插入数据示例

4.4删除数据

4.5Realm实现数据更新

4.5.1更新属性

4.5.2通过主键更新对象

4.6数据查询

4.7普通的数据迁移(Migrations)

4.8Linear Migrations(这种迁移方式解决多个版本迁移问题)


1.Realm是什么?

Realm不是ORM(对象关系映射数据库),也不是建立在sqlite之上。相反,我们为移动应用程序开发人员构建了一个完整的数据库,它使用动态映射到完整的自定义数据库引擎(而不仅仅是一个键值存储)的本机JavaScript对象。这允许我们在保持性能的同时提供一个简单的API。使用Realm,您可以建模复杂的数据,链接图形中的对象,以及组成高级查询。

realm react native带来了您对realm所期望的现代设计和简单性,并允许您使用相同的代码库兼容iOS和Android。

Realm是一个为移动应用程序开发的独特的数据库,它直接运行在手机、平板电脑或可穿戴设备中。在2014推出了兼容Java、Objective-C和SWIFT的数据库,现在已被包括星巴克、思科、沃尔玛、谷歌、Amazon和易趣网在内的appmakers(app开发者)公司使用数亿台设备,再加上许多其他设备。

2.使用的前提条件

a.确保将您的环境支持运行react本机应用程序。按照React Native instructions(https://facebook.github.io/react-native/docs/getting-started.html)开始。
b.使用Realm的应用可以支持iOS和Android。
c.需要使用React Native 0.31.0及更高版本,才可以使用Realm。

3.Realm配置

3.1Realm配置

a.进入你的React Native项目中(cd <project-name>)

b.对你的项目增加realm依赖

npm install --save realm

c.接下来,将您的项目链接到Realm native模块。

react-native link realm

Android警告:根据版本不同,React Native Link可能会生成无效配置,正确更新Gradle(android/settings.gradle和android/app/build.gradle),但无法添加Realm模块。确认react native link已添加realm模块;如果没有,请通过以下步骤手动链接到库:

c.1.在android/settings.gradle中添加以下行:

include ':realm'
project(':realm').projectDir = new File(rootProject.projectDir, '../node_modules/realm/android')

c.2在android/app/build.gradle中向依赖项添加Realm:

// When using Android Gradle plugin 3.0 or higher
dependencies {
    implementation project(':realm')
}

// When using Android Gradle plugin lower than 3.0
dependencies {
    compile project(':realm')
}

c.3在mainapplication.java中添加导入并链接包:

import io.realm.react.RealmReactPackage; // add this import

public class MainApplication extends Application implements ReactApplication {
    @Override
    protected List<ReactPackage> getPackages() {
        return Arrays.<ReactPackage>asList(
            new MainReactPackage(),
            new RealmReactPackage() // add this line
        );
    }
}

4.Realm使用(增删改查)

4.1Realm支持的数据类型

Realm支持的基础数据类型:boolintfloatdoublestringdata, and date;

a.bool属性映射到javascript布尔值
b.int、float和double属性映射到javascript数值。内部“int”和“double”存储为64位,而float存储为32位。
c.string属性映射到字符串
d.data数据属性映射到ArrayBuffer
e.date属性映射到Date

4.2打开Realm

打开Realm只是通过调用Realm类上的静态open方法来执行的。传递配置对象。我们已经在包含schema key的配置对象的示例中看到了这一点:

// 获取默认支持对象(objects)默认的Realm
Realm.open({schema: [Car, Person]})
  .then(realm => {
    // ...使用realm实例进行操作
  })
  .catch(error => {
    // 在这里处理运行的错误
  });

 

4.3插入数据示例

a.通过过去的realm对象调用write方法在Realm中写入数据;

realm.write(function(){});

b.创建一条新数据

realm.create(数据类型='Car',对象,Realm.UpdateMode.Never);

enum UpdateMode {
        Never = 'never',
        Modified = 'modified',
       

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值