iOS 使用couchbaselite 与couchDB同步
之前项目有一个需求,每天从服务器拿一首诗歌,然后加到本地数据库。加到本地数据库之后还要根据服务器对诗歌的增删改查,本地数据也要相应修改。如果用传统的接口方法增删改查,逻辑会很复杂。
我就想,有没有一种方法,能像git管理代码一样同步本地数据库与服务器数据库,这样就简单多了,这时候chouchbaselite能满足我们的需求。
大家可以从couchbaselite官网下载最新framework:http://www.couchbase.com/nosql-databases/couchbase-mobile
导入framework,推荐用cocopod,不解释。
就拿我们公司项目同步诗歌来说吧,首先,我们想要从couchDB上吧诗歌数据同步下来
首先导入头文件和定义变量
database顾名思义就是本地数据库,CBLReplication就是一个发送请求的类,这里定义了两个,_push和_pull,用过git的人都知道,一个代表提交,一个是拉下来的意思,如果我们只需要同步服务器的数据的话_pull就ok。_push是本地作修改再提交的时候会用到,等下会提到。
创建database和请求
kDatabaseName 就是你数据库名字,有一点要注意原文这样写道
不能用大写字母,原因不明。
CBLReplication的创建
name和password就是couchDB的授权,kServerDbURL是couchDB数据库地址。最后用通知去回调,可以添加进度条。PS,如果不想同步整个库,只想同步其中几条的话,可以用CBLReplication的filter和documentIDs。documentIDs是一个数组,里面放你想同步字段的documentid,couchDB每条数据都有documentid。filter就是内容筛选。
打印进度,SYNC idle为同步完成
取出数据
首先建立一个数据modle,couchbase里面提供了专门的modle类,然后再modle里面定义好接收的属性例如
遍历rowEnum,然后每一条加进我们创建的model。poem就是我们所要的每一条诗歌包含的数据。如果想要取出的时候作筛选,可以用predicate属性去操作。
增删改查
这个很简单,看下api就可以了,对本地database做完操作想要提交上服务器,只需要生成一个push请求,然后[push start]就ok了。这里操作有空再写
最后
couchbaselite 去管理客户端根服务端的数据,原理跟管理代码一样,很简单。特别是一些数据增删改查,都不需要后台写接口,直接对数据库操作。没用过的可以用下,然后一起研究交流。
weibo:http://weibo.com/u/1932188797/home?topnav=1&wvr=6