2015-08-17 48 views
4

我試圖更新用戶(不是當前用戶)。我想你必須使用雲代碼來進行更新。iOS +解析雲代碼 - 更新特定用戶(未登錄用戶)

我已經創建了下面的雲功能來更新選定的用戶。我正在嘗試將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) 
           }); 

       }); 

目標C // meetingId - 從會議對象獲得。

[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給它。任何幫助將不勝感激。

回答

4

沒有與代碼的一些問題,將阻止其工作:

  1. 雲代碼期望會議ID參數被命名爲@"meetingId",所以更改傳遞給@{@"objectId":user.objectId, @"meetingId":meetingId}

  2. 參數

    使用Parse.User,而不是'_User'來擴展用戶。

  3. GET - 不建 - 用戶正在更新

總結...

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

非常感謝!感謝您澄清如何使用雲功能。你的代碼應該工作 - 我收到以下錯誤。 「操作無法完成(解析錯誤141.)」UserInfo = 0x1702f8080 {code = 141,temporary = 0,error = {「code」:101,「message」:「Object not found。」}, - - 不知道爲什麼會發生這種情況,因爲我試圖更新的用戶確實存在,並且有一個屬性(數組)來存儲會議ID。 – Ronaldoh1

+0

因此,您已經檢查了傳遞給雲的用戶標識,並確認數據瀏覽器中存在具有該標識的用戶? – danh

+0

正確-im檢查用戶我想要更新之前它存在傳遞到[PFCloud callFunctionInBackground ....]; – Ronaldoh1

1

我正在執行@ DANH的回答後,仍然得到錯誤。我需要添加

Parse.Cloud.useMasterKey() 

在.js文件中,然後一切工作完美!

+0

我也一樣,但在@ danh的回答中有一個錯字。應該是'useMasterKey'而不是'userMasterKey' – Lengo

+0

對不起。修正了我的答案。 – danh