2014-10-20 64 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