初始化一個數(shù)據(jù)表
云端
新建一個leancloud項目捧存,獲取該項目的APP_ID和APP_KEY
本地
varAPP_ID= yourId
varAPP_KEY = yourKey
AV.init({
????appId: APP_ID,appKey: APP_KEY
})
默認和自定義數(shù)據(jù)類
AV初始化之后,它就是一個特定APP的數(shù)據(jù)庫對象了洒敏,這個對象默認有_User等對象,通過AV.Object.extend('數(shù)據(jù)表名稱')你就可以為該APP建立一個新的數(shù)據(jù)表類疙驾,初始化該類,得到該類的一個實例郭毕,你就可以往這個實例中存儲對象了它碎,需要注意的是:每個實例化對象在本地建立數(shù)據(jù),推送到云端后显押,就會產(chǎn)生一個全局唯一的id扳肛,這個id用來在之前定義的數(shù)據(jù)表類中查詢實例對象。
建立對象(數(shù)據(jù)表)
varTodoFolder = AV.Object.extend("TodoFolder")//聲明一個數(shù)據(jù)表乘碑,返回的是一個類vartodoFolder =newTodoFolder()//將該類實例化todoFolder.set("name","Plearner")//存入名字屬性todoFolder.set("job","web-developper")//存入工作屬性//然后將該數(shù)據(jù)存入云端挖息,并設(shè)置回調(diào)函數(shù)todoFolder.save().then(function(todo){? ? save(todo.id)//每個返回的對象都有一個全局唯一的id屬性dealWith(todo)} ,function(error){? dealWith(error)})
獲取對象1.1(數(shù)據(jù)表)
varquery = AV.Query('TodoFolder')//輸入要查詢哪個對象(那個數(shù)據(jù)表)query.get(id).then(function(todo){//這個id就是某個實例對象的屬性dealWith(todo)},function(error){? dealWith(error)})
同步對象(云端到本地)
// 使用已知 objectId 構(gòu)建一個 AV.Objectvartodo =newTodo();? todo.id ='5590cdfde4b00f7adb5860c8';? todo.fetch().then(function(todo){// // todo 是從服務(wù)器加載到本地的 Todo 對象varpriority = todo.get('priority');? },function(error){? });
只同步對象的指定屬性(云端到本地)
// 使用已知 objectId 構(gòu)建一個 AV.Objectvartodo =newTodo();? todo.id ='5590cdfde4b00f7adb5860c8';? todo.fetch({keys:'priority,location'}).then(function(todo){// 獲取到本地},function(error){// 異常處理console.error(error);? });
更新對象(本地到云端)
在 id 已知的情況下,則可以通過如下接口從本地構(gòu)建一個 AV.Object 來更新這個對象:
// 第一個參數(shù)是 className兽肤,第二個參數(shù)是 objectIdvartodo = AV.Object.createWithoutData('Todo','5745557f71cfe40068c6abe0');// 修改屬性todo.set('content','每周工程師會議套腹,本周改為周三下午3點半。');// 保存到云端todo.save();
刪除對象
假如某一個 Todo 完成了资铡,用戶想要刪除這個 Todo 對象电禀,可以如下操作
vartodo = AV.Object.createWithoutData('Todo','57328ca079bc44005c2472d0');? todo.destroy().then(function(success){// 刪除成功},function(error){// 刪除失敗});
創(chuàng)建用戶對象
varuser =newAV.User();// 設(shè)置用戶名user.setUsername('Tom');// 設(shè)置密碼user.setPassword('cat!@#123');// 設(shè)置郵箱user.setEmail('tom@leancloud.cn');? user.signUp().then(function(loginedUser){console.log(loginedUser);? },function(error){? });
獲取用戶對象
獲取用戶一般發(fā)生在用戶本人登錄之后,打開微博或者微信,它不會每次都要用戶重新登錄笤休,這是因為他將用戶數(shù)據(jù)緩存在了客戶端尖飞,同樣,只要調(diào)用了相關(guān)的登錄接口,LeanCloud SDK都會自動緩存用戶的數(shù)據(jù)政基,例如:判斷當前用戶是否為空贞铣,為空就跳轉(zhuǎn)到登錄頁面,不為空就跳轉(zhuǎn)到首頁
varcurrentUser = AV.User.current()if(currenrUser){//跳轉(zhuǎn)到首頁}else{//跳轉(zhuǎn)到登錄頁面}
注意:如果不調(diào)出登出方法沮明,用戶數(shù)據(jù)將永久保存在客戶端辕坝。
登出操作:
用戶登出系統(tǒng)時,SDK 會自動清理緩存信息
AV.User.logOut()varcurrentUser = AV.User.current()//現(xiàn)在的currentUser是null了
在用戶對象上添加自定義屬性
AV.User.logIn('Tom','cat!@#123').then(function(loginedUser){// 25console.log(loginedUser.get('age'));? ? loginedUser.set('age',18);returnloginedUser.save();? }).then(function(loginedUser){// 18console.log(loginedUser.get('age'));? }).catch(function(error){// 異常處理console.error(error);? });
這段代碼表示珊擂,根據(jù)用戶名和密碼先登錄圣勒,登錄成功之后,會返回此用戶對象摧扇,然后把這個對象交給下一個回調(diào)函數(shù)圣贸,就是then后面的函數(shù),在這個函數(shù)中扛稽,會對該用戶對象添加age屬性吁峻,然后再次保存,保存成功之后在张,會再次返回該用戶對象用含,然后我們在讓整個回調(diào)函數(shù)返回(return)該用戶對象,在下一個then中的回調(diào)函數(shù)帮匾,繼續(xù)對該用戶對象做進一步操作啄骇,也就是說只要回調(diào)函數(shù)需要異步返回對象的話,后面可以一直接一個then瘟斜。
To be continued...