解析云代码之前保存未在更新时运行
Posted
技术标签:
【中文标题】解析云代码之前保存未在更新时运行【英文标题】: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);
);
【问题讨论】:
【参考方案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 来克服这个问题;功能。以上是关于解析云代码之前保存未在更新时运行的主要内容,如果未能解决你的问题,请参考以下文章