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中运行。
发布于 2018-03-05 23:31:13
两件事:如果你的roleQuery失败了,你通过response.success。但是,按照promise的工作方式,它将返回一个空的已解析promise,并将该promise传递给promise链中的下一个环节,因此将调用最后一个.then()处理程序的成功块,并且多次调用response时会出现错误。
另一个:您在第二个.then()中没有错误处理程序,所以我打赌您的role.save()失败了(可能是权限?尝试role.save(null, {useMasterKey:true});,如果是这样的话,您永远不会调用response.error或response.success。
https://stackoverflow.com/questions/49089647
复制相似问题