iOS + Parse Cloud Code - 更新特定用户(未登录用户)

时间:2015-08-17 02:29:08

标签: ios parse-platform cloud-code

我正在尝试更新用户(不是当前用户)。我想你必须使用云代码来进行更新。

我在下面创建了云功能来更新所选用户。我正在尝试将meetingId添加到属于User类的数组属性。

Cloud Code:

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)
                                });

               });

目标-C // meetingId - 从Meeting Object获取。

  [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.)"}

我是Cloud代码的新手 - 我基本上只想更新属于所选用户的数组并向其添加一个meetingId。任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:4)

代码存在一些阻止其工作的问题:

  1. 云代码希望会议ID参数名为@"meetingId",因此更改传递给@{@"objectId":user.objectId, @"meetingId":meetingId}的参数

  2. 使用Parse.User,而不是'_User'来扩展用户。

  3. get - 不要构建 - 正在更新的用户

  4. 总结......

    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);
        });
    });
    

答案 1 :(得分:1)

在实施@ danh的答案后,我仍然收到错误。我需要添加

Parse.Cloud.useMasterKey()
<。>在.js文件中然后一切都很完美!