realm使用

realm使用

安装

  • yarn add realm
  • react-native link
  • 如果安卓出现import io.realm.react.RealmReactPackage; 异常 说明没添加依赖,解决方式进入android/app/build.gradle文件dependencies中添加 compile project(':realm')

使用

创建数据库
const realm = new Realm({schema:[schemas...]})//生成多张表的数据库结构(会自动加载以前存储的数据)
更新表结构
const currentVersion = Realm.schemaVersion(Realm.defaultPath);//获取当前数据库的版本
const realm = new Realm({schema: [PersonSchema],schemaVersion:currentVersion+1});//创建新版本并覆盖旧版本 ,模型数据不会丢失,把表结构里的字段更换为其他类型属性时 旧模型的该字段会初始化
创建模型表
const Schema = {
    name:"表格名称",
    primaryKey:"主键字段",
    properties:{//所有字段
        column:'string?[]' //?表示该属性可以为空,[]表示该属性为一个数组并且强制要求只能为string
        column2:'otherSchema[]' //表示为另一个表模型的数组
    }
}

注意: CUD都需要在realm.write(_=>{...})回调中执行

增删改查方法
  • crate 需要在write回调函数中使用

     realm.create("table",{xxx:xxx,...})
    
  • update

    //方式1 前提 模型表必须设置主键
     realm.create("table",{主键:xx,xxx:xxx,...})//根据主键来修改数据
    //方式2 获取到指定模型后直接更新模型的属性即可更新数据库(前提是这些操作都需要在write回调中进行)
     const models = realm.objects("table")
     const model = models.filtered("column = xxx")[0]
     model.cloumn = xxx;
    
  • delete

    realm.delete(查询拿到的模型)
    realm.deleteAll()//删除所有模型
    
  • select

    const models = realm.objects("xxx")//拿到表中所有模型
    models[0] //拿到指定位置的模型
    models.filtered("条件语句")//过滤拿到指定的模型
    //不用担心性能问题 realm的查询都是懒汉式的
    

你可能感兴趣的:(realm使用)