2014-07-09 50 views
0

我正在研究一個應用程序,需要能夠搜索合作伙伴玩。顯然,爲用戶保存不是問題,但我不確定修改其他用戶的數據的最佳方式是什麼。也許發送消息給其他用戶,在登錄時自動讀取並添加關係狀態?如何保存未使用Parse登錄的用戶?

這就是我所擁有的 - 它從所有玩家身上找到一個隨機玩家,同時搜索一個遊戲並將它們添加到「夥伴」關係中。現在我怎麼會讓其他用戶發生這種情況?:

- (IBAction)searchForPlayer:(id)sender { 


    [self.currentUser setObject:@0 forKey:@"searching"]; 

    PFQuery *findPotential = [PFQuery queryWithClassName:@"_User"]; 
    [findPotential whereKey:@"searching" equalTo:@1]; 
    [findPotential findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 

     int partnerNum = arc4random_uniform(objects.count); 
     PFUser *newPartner = [objects objectAtIndex:partnerNum]; 

     if(error){ 
      NSLog(@"Error!"); 
     } 

     else { 

      if (objects.count == 0|| [newPartner.objectId isEqualToString:self.currentUser.objectId]) { 
       NSLog(@"None found"); 
       [self.currentUser setObject:@1 forKey:@"searching"]; 
      } 

      else { 

       PFRelation *partners = [self.currentUser relationForKey:@"partners"]; 
       [partners addObject:newPartner]; 
       NSLog(@"Partner is: %@", newPartner.username); 
       [self.currentUser setObject:@0 forKey:@"searching"]; 
      } 
     } 
    }]; 

[self.currentUser saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
    if(error){ 
     NSLog(@"Error!"); 
    } 
    }]; 
} 

回答

0

你永遠不想做這樣的客戶端。出於安全目的,用戶不能更改其他用戶。使用雲代碼。調用一個函數,並在該函數中驗證您確實想要這樣做,然後使用主鍵查詢和修改其他對象。

可大多隻是將您的Objective-C的查詢/例如JavaScript中,把它接受幾個參數的雲功能裏,並把這個頂部:

Parse.Cloud.useMasterKey(); 

或者,您可以提供主密鑰個別具體的方法,如:

object.save(null, { useMasterKey: true }).then(function(object) { ... 

雲上的代碼文檔點擊此處閱讀起來:https://parse.com/docs/cloud_code_guide

+0

我剛剛看到您的問題的答案Ø在你回答這個問題之前解析論壇。你甚至在你知道之前就幫助過我:P 因此,將客戶端代碼轉移到雲代碼部分找到一個隨機播放器也許會是一個更好的主意?學習如何做到這一點的最佳方式是什麼?不幸的是我不知道javascript。 – SMD01

+0

我建議通過JavaScript文檔,雲代碼文檔進行查看,並嘗試將您已有的內容轉換爲其他語言。看到遇到什麼問題,並在卡住時提出進一步的問題。 – Fosco