iOS + Parse Cloud Code-обновление конкретного пользователя (не вошедшего в систему пользователя)


Я пытаюсь обновить пользователя (который не является текущим пользователем). Я решил, что для обновления нужно использовать облачный код.

Я создал облачную функцию ниже, чтобы обновить выбранного пользователя. Я пытаюсь добавить meetingId к свойству массива, которое принадлежит классу User.

Облачный Код:

Parse.Cloud.define('updateUser', function(request, response) {

               var userId = request.params.userId,
               meetingId = request.params.meetingId;

               var User = Parse.Object.extend('_User'),
               user = new User({ objectId: userId });

               user.addUnique("meetingsArray", meetingId)


               user.save(null, {userMasterKey:true}).then(function(user) {
                                response.success(user);
                                }, function(error) {
                                response.error(error)
                                });

               });

Цель-С // meetingId-получается из объекта Meeting.

  [PFCloud callFunctionInBackground:@"updateUser" withParameters:@{@"objectId":user.objectId, @"meetingsArray":meetingId} block:^(NSString *result, NSError *error)
     {
         if (!error) {
             NSLog(@"%@",result);
         }else if(error){
             NSLog(@"%@", error);
         }
     }];

Когда я запускаю приложение-я получаю следующий код ошибки:

Error Domain=Parse Code=141 "The operation couldn’t be completed. (Parse error 141.)" UserInfo=0x1704f2780 {code=141, temporary=0, error={"code":201,"message":"missing user password"}, originalError=Error Domain=NSURLErrorDomain Code=-1011 "The operation couldn’t be completed. (NSURLErrorDomain error -1011.)"}

Я новичок в этом деле. Облачный код - я просто хочу обновить массив, который принадлежит выбранному пользователю, и добавить к нему идентификатор meetingId. Любая помощь была бы очень признательна.

2 4

2 ответа:

Есть несколько проблем с кодом, которые помешают ему работать:

  1. Облачный код ожидает, что параметр id собрания будет иметь имя @"meetingId", поэтому измените параметры, переданные в @{@"objectId":user.objectId, @"meetingId":meetingId}

  2. Используйте Parse.User, а не '_User' для расширения пользователя.

  3. Get-don't build - пользователь обновляется

Подведение итогов...

Parse.Cloud.define('updateUser', function(request, response) {
    var userId = request.params.userId;
    var meetingId = request.params.meetingId;

    var query = new Parse.Query(Parse.User);
    query.get(userId).then(function(user) {
        user.addUnique("meetingsArray", meetingId);
        return user.save(null, {useMasterKey:true});
    }).then(function(user) {
        response.success(user);
    }, function(error) {
        response.error(error);
    });
});

Я все еще получал ошибку после реализации ответа @danh. Мне нужно было добавить

Parse.Cloud.useMasterKey()

В .файл js тогда все работало идеально!