目录
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支持的基础数据类型:bool
, int
, float
, double
, string
, data
, 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',