之前項(xiàng)目有一個(gè)需求咖气,每天從服務(wù)器拿一首詩(shī)歌,然后加到本地?cái)?shù)據(jù)庫(kù)挖滤。加到本地?cái)?shù)據(jù)庫(kù)之后還要根據(jù)服務(wù)器對(duì)詩(shī)歌的增刪改查崩溪,本地?cái)?shù)據(jù)也要相應(yīng)修改。如果用傳統(tǒng)的接口方法增刪改查壶辜,邏輯會(huì)很復(fù)雜悯舟。
我就想,有沒(méi)有一種方法砸民,能像git管理代碼一樣同步本地?cái)?shù)據(jù)庫(kù)與服務(wù)器數(shù)據(jù)庫(kù)抵怎,這樣就簡(jiǎn)單多了,這時(shí)候chouchbaselite能滿足我們的需求岭参。
大家可以從couchbaselite官網(wǎng)下載最新framework:http://www.couchbase.com/nosql-databases/couchbase-mobile
導(dǎo)入framework反惕,推薦用cocopod,不解釋演侯。
就拿我們公司項(xiàng)目同步詩(shī)歌來(lái)說(shuō)吧,首先姿染,我們想要從couchDB上吧詩(shī)歌數(shù)據(jù)同步下來(lái)
首先導(dǎo)入頭文件和定義變量
database顧名思義就是本地?cái)?shù)據(jù)庫(kù),CBLReplication就是一個(gè)發(fā)送請(qǐng)求的類,這里定義了兩個(gè)悬赏,_push和_pull狡汉,用過(guò)git的人都知道,一個(gè)代表提交闽颇,一個(gè)是拉下來(lái)的意思盾戴,如果我們只需要同步服務(wù)器的數(shù)據(jù)的話_pull就ok。_push是本地作修改再提交的時(shí)候會(huì)用到兵多,等下會(huì)提到尖啡。
創(chuàng)建database和請(qǐng)求
kDatabaseName 就是你數(shù)據(jù)庫(kù)名字,有一點(diǎn)要注意原文這樣寫(xiě)道
不能用大寫(xiě)字母,原因不明剩膘。
CBLReplication的創(chuàng)建
name和password就是couchDB的授權(quán)衅斩,kServerDbURL是couchDB數(shù)據(jù)庫(kù)地址。最后用通知去回調(diào)怠褐,可以添加進(jìn)度條畏梆。PS,如果不想同步整個(gè)庫(kù)惫搏,只想同步其中幾條的話具温,可以用CBLReplication的filter和documentIDs。documentIDs是一個(gè)數(shù)組筐赔,里面放你想同步字段的documentid铣猩,couchDB每條數(shù)據(jù)都有documentid。filter就是內(nèi)容篩選茴丰。
打印進(jìn)度达皿,SYNC idle為同步完成
取出數(shù)據(jù)
首先建立一個(gè)數(shù)據(jù)modle,couchbase里面提供了專門(mén)的modle類贿肩,然后再modle里面定義好接收的屬性例如
遍歷rowEnum峦椰,然后每一條加進(jìn)我們創(chuàng)建的model。poem就是我們所要的每一條詩(shī)歌包含的數(shù)據(jù)汰规。如果想要取出的時(shí)候作篩選汤功,可以用predicate屬性去操作。
增刪改查
這個(gè)很簡(jiǎn)單溜哮,看下api就可以了滔金,對(duì)本地database做完操作想要提交上服務(wù)器,只需要生成一個(gè)push請(qǐng)求茂嗓,然后[push start]就ok了餐茵。這里操作有空再寫(xiě)
最后
couchbaselite 去管理客戶端根服務(wù)端的數(shù)據(jù),原理跟管理代碼一樣述吸,很簡(jiǎn)單忿族。特別是一些數(shù)據(jù)增刪改查,都不需要后臺(tái)寫(xiě)接口,直接對(duì)數(shù)據(jù)庫(kù)操作道批。沒(méi)用過(guò)的可以用下错英,然后一起研究交流。
weibo:http://weibo.com/u/1932188797/home?topnav=1&wvr=6