【问题标题】:Parse Cloud Code beforeSave not running on update解析云代码之前保存未在更新时运行
【发布时间】:2014-10-20 03:24:16
【问题描述】:

我在下面为 beforeSave 定义了 Parse Cloud Code 函数。

Parse.Cloud.beforeSave(Parse.User, function(request, response) {
  Parse.Cloud.useMasterKey();

  var publicACL = new Parse.ACL();
  publicACL.setPublicReadAccess(true);
  publicACL.setPublicWriteAccess(true);

  request.object.setACL(publicACL);

  response.success();
});

每当我保存新的 Parse.User 时,此代码都会正确运行。但是,当我尝试更新预先存在的 Parse.User 时,代码不会执行。有什么想法吗?下面是我用来更新我的用户的代码。

函数 updateStudentTypes(id, studentType, chkBox) {

var query = new Parse.Query(Parse.User);
query.get(id, {
  success: function(user) {
    var typeList = user.get("studentType");

    if(!chkBox.checked)
      typeList = removeStudentType(typeList, studentType);
    else
      typeList = addStudentType(typeList, studentType);

    user.set("studentType", typeList);
    user.save(null, {
      success: function(user) {
        //alert('New object created with objectId: ' + user.id);
      },
      error: function(user, error) {
        alert('Failed to update user: ' + error.message);
      }
    }); 

  },
  error: function(object, error) {
    alert("Error querying user: " + error);
  }
});

}

【问题讨论】:

    标签: javascript parse-platform


    【解决方案1】:

    将此添加到 updateStudent 方法的开头:

    Parse.Cloud.useMasterKey();
    

    编辑:我认为您的代码是云代码,而不是客户端 javascript。

    【讨论】:

    • 感谢您的评论。我试过这个,但它没有用。我的 updateUsers 方法通过 Javascript 在网页上运行,我得到一个 undefined is not a function 错误。
    • 需要使用云代码查询用户。它不能在客户端完成
    • 查询在客户端工作,没有问题。我只是不能“更新”用户对象。你是说我需要创建 Cloud Code 来“更新”用户对象,然后使用 useMasterKey() 函数?
    • 抱歉,可能有误。这完全取决于您的 ACL 权限。您是要更改当前用户的数据还是其他用户的数据?默认情况下(根本没有设置 ACL)PFUser ACL 权限是 public:read 但不是 public:write
    • 如果您正在尝试保存另一个用户,是的,您仍然可以通过创建云代码来使用 userMasterKey() 覆盖 ACL 来克服这个问题;功能。
    猜你喜欢
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多