2014-10-20 30 views
0

我已经为beforeSave定义了一个Parse Cloud代码函数。解析Cloud代码beforeSave未在更新中运行

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。

+0

感谢您的评论。我试过了,但没有奏效。我的updateUsers方法通过Javascript运行在网页上,并且我得到一个未定义的不是函数错误。 – 2014-10-20 16:39:24

+0

您需要使用云代码来查询用户。它不能在客户端完成 – hybrdthry911 2014-10-20 17:22:27

+0

查询正在客户端工作,没有问题。我只是不能“更新”用户对象。你是否说我需要创建Cloud Code来“更新”用户对象,然后使用useMasterKey()函数? – 2014-10-20 19:07:21