Parse.Cloud.define('assignRole', function(request, response){
Parse.Cloud.useMasterKey();
var user = Parse.User.current();
var roleQuery = new Parse.Query(Parse.Role);
roleQuery.equalTo("name", "UserManager");
roleQuery.first({ useMasterKey: true }).then(function (role) {
role.getUsers().add(user);
return role.save();
}, function (error) {
console.log(JSON.stringify(error));
response({success:false})
}).then(function (userRole) {
if(userRole) {
response({success:true})
} else {
response({success:false})
}
});
});
有什么想法吗?我得到504,它总是超时。我究竟做错了什么?类似的代码适用于afterSave。
两件事:如果您的roleQuery失败,则传递response.success。然而,promises的工作方式,它将返回一个空的已解决的promise,它被传递到promise链中的下一个链接,因此最后一个.then()处理程序的成功块将被调用,你将得到一个错误多次调用响应。
另一个:你没有在第二个.then()中有一个错误处理程序,所以我的赌注是你的role.save()失败了(也许权限?尝试role.save(null, {useMasterKey:true});
,如果是这样的话,你永远不会调用响应。错误或response.success。