2014-03-06 42 views
0

目前,我正在向Parse.com發送一些數據。所有工作都很好,但是,如果它是新用戶,我想添加一行,或者如果它是舊用戶,請更新當前表。Parse.com - 如果存在密鑰,請更新

所以我需要做的是檢查當前的Facebook ID(我使用的鍵)在FBID列的任何地方顯示出來,然後更新它,如果情況而定。

我如何檢查的關鍵在列存在?

另外,我正在使用C#/ Unity。

static void sendToParse() 
    { 
     ParseObject currentUser = new ParseObject("Game"); 
     currentUser["name"] = fbname; 
     currentUser["email"] = fbemail; 
     currentUser["fbid"] = FB.UserId; 
     Task saveTask = currentUser.SaveAsync(); 
     Debug.LogError("Sent to Parse"); 
    } 
+0

問題到底是什麼? – akaHuman

+0

如何檢查列中是否存在密鑰? –

+0

這是什麼意思'表中的任何地方'。表中必須有一列或幾列可以檢查。順便說一下代碼在哪裏? – Iqbal

回答

2

好吧,我想通了。

首先,我檢查其是否有任何的Facebook ID在當前的ID匹配的表,然後獲取匹配的數目。

public static void getObjectID() 
    { 
     var query = ParseObject.GetQuery("IdealStunts") 
       .WhereEqualTo("fbid", FB.UserId); 
     query.FirstAsync().ContinueWith(t => 
     { 
      ParseObject obj = t.Result; 
      objectID = obj.ObjectId; 
      Debug.LogError(objectID); 
     }); 
    } 

如果有任何與當前Facebook ID匹配的密鑰,請不要執行任何操作。如果沒有,只需添加一個新用戶。

public static void sendToParse() 
    { 

     if (count != 0) 
     { 
      Debug.LogError("Already exists"); 
     } 
     else 
     { 
      ParseObject currentUser = new ParseObject("IdealStunts"); 
      currentUser["name"] = fbname; 
      currentUser["email"] = fbemail; 
      currentUser["fbid"] = FB.UserId; 
      Task saveTask = currentUser.SaveAsync(); 
      Debug.LogError("New User"); 
     } 
    } 

您必須爲sendToParse執行StartCoroutine,因此getObjectID有時間查看錶格。

這可能是一個蹩腳的實現,但它的工作原理。

+0

對不起,我有一些問題。什麼是「計數」?以及如何使用StartCoroutine? – Plagorn

1

你需要做的是爲fbid創建一個查詢。如果查詢返回一個對象,則更新它。如果不是,則創建一個新的。

我不精通C#,但這裏是在Objective-C的例子:

PFQuery *query = [PFQuery queryWithClassName:@"Yourclass]; // Name of your class in Parse 
query.cachePolicy = kPFCachePolicyNetworkOnly; 
[query whereKey:@"fbid" equalTo:theFBid]; // Variable containing the fb id 
NSArray *users = [query findObjects]; 
self.currentFacebookUser = [users lastObject]; // Array should contain only 1 object 

if (self.currentFacebookUser) { // Might have to test for NULL, but probably not 
    // Update the object and save it 
} else { 
    // Create a new object 
}