2015-03-14 2 views
0

В моем классе _User У меня есть столбец с именем check. Начальное значение столбца для someUser (другой сохраненный пользователь) равно true и как currentUser (в настоящее время вошедший пользователь) Я хочу иметь возможность изменить это значение на false.Сохраните изменения к пользователю, который в данный момент не зарегистрирован

К сожалению, из соображений безопасности Parse не позволяет мне сохранять изменения для пользователя, который в настоящее время не зарегистрирован, и я получаю сообщение об ошибке: User cannot be saved unless they have been authenticated via logIn or signUp. Я уже пробовал добавить ACL к общему read and write, но это не сработало.
Я знаю, что мне нужно использовать Cloud Code и Master Key, чтобы разобраться. Есть этот пост: Can't write non current user objects by PFUser currentuser, но я не могу понять, как его адаптировать.

+0

Вопрос в том, как использовать мастер-ключ в облачном коде? – Thellimist

+0

Да. Я хочу дать currentUser Write доступ в классе _User. –

ответ

0
Parse.Cloud.define("test_func", function (request, response) { 

var user = request.user; 
user.increment("blabla", value); //do user stuff 
user.save(); // You don't need masterkey to edit your own user object 

// Get authentication to edit other user objects 
Parse.Cloud.useMasterKey(); 

// query or get another user 
var user2 = ... 
user2.increment("blabla", value); // do user2 stuff 
user2.save(); 

// Finish cloud func 
response.success("yeeey"); 
} 

Если вы не useMasterKey Анализировать даст ошибку при сохранении user2

0

Вы можете использовать что-то вроде этого:

Parse.Cloud.define("update_user", function(request, response) { 
 
\t var query = new Parse.Query(Parse.User); 
 
\t query.equalTo("objectId", request.params.objectId) 
 
\t // Queries user to be updated 
 
\t query.first({ 
 
\t \t success: function(user) { 
 
\t \t \t user.set("check", request.params.check); 
 

 
\t \t \t // Updates user (using MasterKey to get permission to update non logged in users) 
 
\t \t \t user.save(null, { useMasterKey: true }).then(function() { 
 
\t \t \t \t response.success(); 
 
\t \t \t }, function(error) { 
 
\t \t \t \t response.error(error); 
 
\t \t \t }); 
 
\t \t \t 
 
\t \t }, error: function(error) { 
 
\t \t \t response.error(error); 
 
\t \t } 
 
\t }); 
 
});

И называют "update_user" (например, в Objective-C):

NSDictionary *params = @{@"objectId" : user.objectId, 
          @"check" : @"true"}; 

    [PFCloud callFunctionInBackground:@"update_user" withParameters:params block:^(id object, NSError *error) { 
     NSLog(@"error: %@", error.userInfo[@"error"]); 
    }]; 
Смежные вопросы