2014-10-01 3 views
0

Parse 사용자 클래스에서 여러 다른 사용자에 대한 열 값을 삭제할 수 있기를 원합니다. 다음은 약간 설명하는 코드입니다.Parse에서 사용자 클래스의 여러 사용자에 대한 열 값 삭제

PFQuery *query = [PFUser query]; 
[query whereKey:@"objectId" containedIn:usersArray]; //Finding the wanted users 
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    if (!error) { 
     //Here I would like to delete all values for all users inside the "image" column 
     //How can I do that? 
    } 
}]; 

내가 원하는 것을 이해하시기 바랍니다.

답변

2

PFUser 개체를 업데이트하지 않으려는 경우 하나씩 차례로 반복하고 개체를 제거 할 수 있습니다.

PFQuery *query = [PFQuery queryWithClassName:"AnyNonUserOrInstallationClass"]; 
[query whereKey:@"objectId" containedIn:usersArray]; 
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    if (!error) { 
     for (PFObject *object in objects) { 
      [object removeObjectForKey:@"image"]; 
     } 
     // And then you can save all the updated objects via a single call to Parse.com 
     [PFObject saveAllInBackground:objects block:^(BOOL success, NSError *error) { 
      // Check success/error. 
     }]; 
    } 
}]; 

PFUser를 업데이트하고 있으므로 마스터 키를 사용해야합니다. cloud code function을 만들고 거기에 사용자 개체를 저장하여이 작업을 수행 할 수 있습니다.

클라우드 코드

var _ = require('underscore'); 

Parse.Cloud.define("removeUserImages", function(request, response) { 
    var query = new Parse.Query(Parse.User); 
    // Add your criteria for selection, usersArray needs to be passed into the function 
    query.containedIn("objectId", request.params["usersArray"]); 
    query.find().then(function(users) { 
    _.each(users, function(user) { 
     user.unset("image"); 
    }); 
    Parse.Cloud.useMasterKey(); 
    return Parse.Object.saveAll(users); 
    }).then(function(result) { 
    response.success("Success"); 
    }, function(error) { 
    response.error("Couldn't remove images from users"); 
    }); 
}); 

오브젝티브 C는 클라우드 기능을

// oid1, oid2 should be the objectIds of the users you want to remove images from 
[PFCloud callFunctionInBackground:@"removeUserImages" withParameters:@{@"usersArray" : @["oid1", "oid2"]} block:^(id result, NSError *error){ 
    if (!error) { 
    } 
}]; 

주를 호출 : 위의 어느 것도 테스트하지 않습니다. 방금 여기에 입력했습니다.

+0

'logIn 또는 signUp을 통해 인증되지 않은 사용자는 저장할 수 없습니다.'라는 오류 메시지가 나타납니다. 해당 사용자로 로그인하지 않은 경우 사용자를 저장할 수 있습니까? – Peter

+0

아, 맞아. IIRC는 PFUser 객체에 특별한 보안 제한 사항이 있으므로 해당 사용자로 로그인 한 경우에만 저장할 수 있습니다. 마스터 키를 사용하지 않는 한 따라서 사용자가해야 할 일은 쿼리를 실행하고 이미지 개체를 제거하고 마스터 키가있는 사용자를 저장하는 사용자 지정 클라우드 코드 함수를 만드는 것입니다. – rickerbh

+0

위의 내용은 User 또는 Installation이 아니거나 제한적인 ACL이 정의 된 개체에 대해서는 작동합니다. – rickerbh

관련 문제