React Native Realm安装 和 Realm入门理解
realm安装: 1.全局安装 rnpm npm install -g rnpm 2.cd 到工程目录 npm install --save realm 3.将realm库依赖到RN项目中:rnpm link realm 入门理解:(提取一些比较重要的概念,realm官方文档没有详细说明的点) 1.创建目录:默认在缓存document目录下 let db = new Realm({ path:'PUK.realm', scheme:[IMSchema] }) 可以通过 console.log(JSON.stringify(db.path)) 输出数据库的绝对路径, 所以自定义目录,path设置的路径需要也是绝对路径。 2.realm增删改查基本操作的写法: a.修改:增,删,改 需要放在realm的写事务中完成。 realm.write(()=>{ let car1= realm.create('Car',{id:1,name:'mini'}); // 【增】'Car'是表名,car 是表的一条数据 let car2= realm.create('Car',name:'dazong'},true);//[改] //改需要满足两个条件:1.第三个参数true 2.id是主键 如果id不是主键,这句写法就是增 realm.delete(car2);//[删] }) b.查: let cars = realm.objects('Car'); //取此表所有数据 let carsSpecial = cars.filtered('name = "mini" OR name BEGINSWITH "m"'); //条件查询 let carsRange = cars.slice(0,5);//范围筛选 let carsSorted = carsSpercial.sorted('mini');//因为单纯范围筛选没什么意义,所以加上排序方法。 //通常使用方式:查询->排序->筛选 //注意:这里的排序只作用于内存,并不会反映在数据库中 3.realm几个很有用的特性: 1.migration方法 因为定义的scheme在对应的数据库中生成表之后,修改格式是违法的。所以需要用到migration. 它可以把旧数据字段整合到新的数据字段中。 同时migration最大优势是可以对数据库实现版本控制: 写法:(copy官方) var schemas = [ { schema: schema1, schemaVersion: 1migration: migrationFunction1 }, : schema22: migrationFunction2 ... ] // the first schema to update to is the current schema version // since the first schema in our array is at var nextSchemaIndex = Realm.schemaVersion(Realm.defaultPath); while (nextSchemaIndex < schemas.length) { var migratedRealm new Realm(schemas[nextSchemaIndex++]); migratedRealm.close(); } // open the Realm with the latest schema var realm [schemas-]); 2.auto-updated 机制:(copy 官方) let hondas = realm.objects('Car').filtered'make = "Honda"'); // hondas.length == 0 realm.write(() => { realm.create{make: 'Honda'model'RSX'}); }); // hondas.length == 1 hondas一次取完,可以一直与数据库保持同步,不用再次取。 3.notification机制:(copy 官方) // Observe Collection Notifications realm'Dog''age < 2').addListener((puppieschanges{ // Update UI in response to inserted objects changes.insertions.forEach((index{ //增 事件回调 let insertedDog = puppies[index]; ... }); // Update UI in response to modified objects changes.modifications{ //改 事件回调 let modifiedDog // Update UI in response to deleted objects changes.deletions{//查 事件回调 // Deleted objects cannot be accessed directly // Support for accessing deleted objects coming soon... }); }); // Unregister all listeners realm.removeAllListeners(); 因为realm auto-updated机制,所以很好的能够支持数据监听并抛出数据变动事件。 如果感兴趣继续探讨,欢迎加QQ群:429307812 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |