【问题标题】:Unable to create role on Parse.com using CloudCode无法使用 CloudCode 在 Parse.com 上创建角色
【发布时间】:2016-03-25 03:48:58
【问题描述】:

我想使用云代码函数在我的 Parse.com 应用程序中创建角色对象。 我试过的代码是:

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);
  });
});

运行此函数不会创建角色并给出{"code":105} 的响应 - 没有进一步的错误消息。 105 似乎意味着“无效的密钥名称”,但我不确定哪个密钥无效或为什么。

【问题讨论】:

    标签: javascript parse-platform role


    【解决方案1】:

    我有一个稍微修改过的版本可以使用。这是我刚刚测试的 Typescript 版本:

    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);
    
    });
    

    主要区别:

    • 如何获取用户。 (这应该没关系。我测试了你获取当前用户的版本,效果也很好)
    • 如何保存角色。

    这是编译后的 Javascript 版本:

    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);
    });
    

    【讨论】:

    • 谢谢。我为此发疯了,这只是因为我把论点放在save 中。老实说,我最糟糕的噩梦就是整天使用 Javascript。
    • 这里也一样。 Typescript 只是保存了一整类小错误,以后调试起来可能会很痛苦。
    猜你喜欢
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 2016-01-17
    • 2013-09-29
    • 2022-01-06
    • 2016-01-12
    • 2020-10-30
    • 2015-11-05
    相关资源
    最近更新 更多