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。
答案 0 :(得分:0)
两件事:如果您的roleQuery失败,则传递response.success。然而,promises的工作方式,它将返回一个空的已解决的promise,它被传递到promise链中的下一个链接,因此最后一个.then()处理程序的成功块将被调用,你将得到一个错误多次呼叫响应。
另一个:你在第二个.then()中没有错误处理程序,所以我的赌注是你的role.save()失败了(权限可能是?尝试role.save(null, {useMasterKey:true});
,如果那是如果你没有调用response.error或response.success。