2013-05-30 112 views
0

我想獲取登錄用戶的聯繫人列表,但我無法弄清楚如何找到當前用戶。我知道從Parse.com使用Parse.User.current()Stackmob有這樣的事情嗎?當前在stackmob登錄的用戶

下面的代碼來演示我在找什麼。

$(window).load(function() { 
     var user = StackMob.User; 
     var Contacts = StackMob.Model.extend({ schemaName: 'contacts' }); 
     var myContacts = new Contacts(); 
     var q = new StackMob.Collection.Query(); 
     q.equals('sm_owner', user); 
     q.orderAsc('FirstName'); //sort by title in ascending order 
     q.setRange(0, 9); //get the first 10.  second 10 would be setRange(10,19) 
     myContacts.query(q, { 
      success: function (model) { 
       console.debug(model.toJSON()); //JSON array of matching Todo objects 
      }, 
      error: function (model, response) { 
       console.debug(response); 
      } 
     }); 
    }); 

我得到了我一直在尋找使用下面的代碼,但是有(「sm_owner」,'用戶/托馬斯)是有點沒用。

$(window).load(function() {    
     var Contacts = StackMob.Model.extend({ schemaName: 'contacts' }); 
     var myContacts = new Contacts(); 
     var q = new StackMob.Collection.Query(); 
     q.equals('sm_owner', 'user/thomas'); 
     q.orderAsc('FirstName'); //sort by title in ascending order 
     q.setRange(0, 9); //get the first 10.  second 10 would be setRange(10,19) 
     myContacts.query(q, { 
      success: function (model) { 
       console.debug(model.toJSON()); //JSON array of matching Todo objects 
      }, 
      error: function (model, response) { 
       console.debug(response); 
      } 
     }); 
    }); 

回答

1

這聽起來像你想用StackMob的schema permissions這樣做。

例如,您可以設置權限,使用戶只能讀取他們自己創造contact對象。

當用戶創建一個對象時,sm_owner字段被自動設置爲當前登錄的用戶。要利用此優勢,您可以設置contacts模式,以僅允許用戶閱讀他們自己的聯繫人。這樣,由當前用戶進行過濾就完成了服務器端,您不必在客戶端上專門查詢它。

如何進行此設置:

圍棋架構配置和編輯選擇您的架構。在架構權限下,爲Read,UpdateDelete選擇Logged In Permissions -> Allow to sm_owner

現在,當您查詢contacts架構時,只有contact對象(sm_owner ==當前用戶)將被返回。然後,你可以簡單地刪除此行:

q.equals('sm_owner', 'user/thomas'); 
+0

值得一提的是,如果你嘗試獲取的東西,你不訪問,你會得到一個401未經授權響應。例如,如果只允許讀取「任何登錄用戶」,並且您沒有登錄,您將得到一個401響應,錯誤回調將被執行。 –

+0

與此同時,根據Justin的例子,即使數據庫中可能有很多聯繫人,但只有thomas's會被返回,因爲Read權限設置爲「owner」。因此服務器將只返回允許的對象實例。這就是爲什麼你可以刪除'q.equals'('sm_owner','user/thomas')'行。它會在服務器端自動發生,這要感謝您設置的權限。 –

+0

但是,如果確實需要使用當前用戶名建立查詢,則可以使用[getLoggedInuser](https://developer.stackmob.com/sdks/js/api#a-getloggedinuser)方法。 – Justin