美文网首页
realm使用

realm使用

作者: Vijay_ | 来源:发表于2018-05-06 02:13 被阅读21次

    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使用

          本文链接:https://www.haomeiwen.com/subject/busyrftx.html