Reputation: 114826
I want to create Role objects in my Parse.com app using a cloud code function. The code I have tried is:
Parse.Cloud.define("addRole",function(request,response) {
var publicReadACL = new Parse.ACL();
publicReadACL.setPublicReadAccess(true);
var user=Parse.User.current();
var baserolename=request.params.organisation;
var roleType=request.params.roleType;
var roleName=baserolename+"_"+roleType;
Parse.Cloud.useMasterKey();
var role = new Parse.Role(roleName,publicReadACL);
var occupants=role.getUsers();
occupants.add(user);
role.save(role).then (function(role) {
response.success(role.toJSON());
},
function(error) {
response.error(error);
});
});
Running this function doesn't create the role and gives a response of {"code":105}
- no further error message. 105 seems to mean "Invalid Key Name", but I am not sure which key is invalid or why.
Upvotes: 1
Views: 61
Reputation: 1239
I've got a slightly modified version to work. Here's the Typescript version that I've just tested:
Parse.Cloud.define('addRole', (req: Parse.Cloud.FunctionRequest, res: Parse.Cloud.FunctionResponse) => {
let publicReadACL = new Parse.ACL();
publicReadACL.setPublicReadAccess(true);
let user = req.user;
let baseRoleName: string = req.params.organisation;
let roleType: string = req.params.roleType;
let roleName: string = `${baseRoleName}_${roleType}`;
Parse.Cloud.useMasterKey();
let role = new Parse.Role(roleName, publicReadACL);
let occupants = role.getUsers();
occupants.add(user);
role.save()
.then((role: Parse.Role) => {
res.success(role.toJSON())
}, res.error);
});
Key differences:
Here's the compiled Javascript version:
Parse.Cloud.define('addRole', function (req, res) {
var publicReadACL = new Parse.ACL();
publicReadACL.setPublicReadAccess(true);
var user = req.user;
var baseRoleName = req.params.organisation;
var roleType = req.params.roleType;
var roleName = baseRoleName + "_" + roleType;
Parse.Cloud.useMasterKey();
var role = new Parse.Role(roleName, publicReadACL);
var occupants = role.getUsers();
occupants.add(user);
role.save()
.then(function (role) {
res.success(role.toJSON());
}, res.error);
});
Upvotes: 2