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) {
}
}];
주를 호출 : 위의 어느 것도 테스트하지 않습니다. 방금 여기에 입력했습니다.
'logIn 또는 signUp을 통해 인증되지 않은 사용자는 저장할 수 없습니다.'라는 오류 메시지가 나타납니다. 해당 사용자로 로그인하지 않은 경우 사용자를 저장할 수 있습니까? – Peter
아, 맞아. IIRC는 PFUser 객체에 특별한 보안 제한 사항이 있으므로 해당 사용자로 로그인 한 경우에만 저장할 수 있습니다. 마스터 키를 사용하지 않는 한 따라서 사용자가해야 할 일은 쿼리를 실행하고 이미지 개체를 제거하고 마스터 키가있는 사용자를 저장하는 사용자 지정 클라우드 코드 함수를 만드는 것입니다. – rickerbh
위의 내용은 User 또는 Installation이 아니거나 제한적인 ACL이 정의 된 개체에 대해서는 작동합니다. – rickerbh