2015-10-26 40 views
0

我想寫一個雲代碼函數,允許我編輯另一個用戶的數據,因爲我做不到在應用程序中它自己。代碼所做的事情(我應該說試着去做,因爲我不知道JS)使用兩個基於兩個對象ID輸入的獨立查詢來獲取一個User對象和一個Group(一個我創建的類)對象。這裏是我的代碼解析[錯誤]:沒有調用成功/錯誤(代碼:141,版本:1.9.0)

Parse.Cloud.define("addInvite", function(request, response) { 
Parse.Cloud.useMasterKey(); 

var userID = request.params.user; 
var groupID = request.params.group; 

var user; 
var group; 


var userQuery = new Parse.Query(Parse.User); 
userQuery.equalTo("objectId", userID); 


return userQuery.first 
({ 
    success: function(userRetrieved) 
    { 
     user = userRetrieved;  
    }, 
    error: function(error) 
    { 
     response.error(error.message); 
    } 
}); 



var groupObject = Parse.Object.extend("Group"); 
var groupQuery = new Parse.Query(groupObject); 
groupQuery.equalTo("objectId", groupID); 


return groupQuery.first 
({ 
    success: function(groupRetrieved) 
    { 
     group = groupRetrieved;  
    }, 
    error: function(error) 
    { 
     response.error(error.message); 
    } 
}); 
var relations = user.relation("invited"); 
relations.add(group); 

user.save(); 
response.success(); 

});

我每次執行方法我得到的錯誤: [錯誤]:當時不叫成功/錯誤(代碼:141,版本:1.9.0 )

任何人都可以幫忙嗎?謝謝。

+0

刪除'return's,你不需要他們 – kRiZ

回答

2

解析雲中的每個函數都返回一個Promise。這還包括您運行以檢索某些數據的任何查詢函數。很明顯,在你的代碼中,當你執行一個查詢時,你會返回一個Promise,這個查詢會在你的查詢完成時突然結束你的雲功能。由於您在任何成功塊中都不會調用response.success()response.error(),因此您的雲計算函數將返回而不會設置合適的響應,這是Parse需要的,因此也是錯誤。你的代碼需要鏈中的所有承諾,以確保您的代碼正確執行,並在最後一步返回成功/錯誤:

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

    Parse.Cloud.useMasterKey(); 

    var userID = request.params.user; 
    var groupID = request.params.group; 

    var user; 
    var group; 

    var userQuery = new Parse.Query(Parse.User); 
    userQuery.equalTo("objectId", userID); 

    userQuery.first().then(function(userRetrieved) { 
     user = userRetrieved;  
     var groupObject = Parse.Object.extend("Group"); 
     var groupQuery = new Parse.Query(groupObject); 
     groupQuery.equalTo("objectId", groupID); 
     return groupQuery.first(); 

    }).then(function(groupRetrieved) { 
     //group = groupRetrieved;  
     var relations = user.relation("invited"); 
     relations.add(groupRetrieved); 
     return user.save(); 

    }).then(function() { 
     response.success(); 

    }, function(error) { 
     response.error(error.message); 
    }); 

}); 
+0

謝謝!這次沒有錯誤,並且該功能按預期工作! – brettf