2015-10-26 41 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