我在保存雲代碼功能中的對象更改時遇到問題。無法使用用戶ACL在Cloud代碼中保存ParseObject
我有一個叫做Character的集合,裏面有一條記錄。 這個角色記錄與公共閱讀條目和私有寫訪問由特定的ParseUser(6MwfSLdAxd
)訪問。
在Unity,我驗證過的用戶,然後我叫雲代碼功能如下:
ParseCloud.CallFunctionAsync<Character>("startBattle", null).ContinueWith(t =>
{
Debug.Log("I got here...");
Debug.Log(t.Result.ClassName);
});
在我的雲代碼功能,我抓住的第一個字符的集合(忽略檢查,如果它屬於這個用戶,因爲此刻只有一個,它屬於這個用戶 - 也只有一個用戶)。
var Character = Parse.Object.extend("Character");
Parse.Cloud.define("startBattle", function (request, response) {
var user = request.user;
if (user == null)
{
return response.error("You must login before you can battle!");
}
var characterQuery = new Parse.Query(Character);
characterQuery.first()
.then(
function (character) {
character.set("name", "Cloud Code sucka");
character.save().then(function(character) {
return response.success(character);
});
},
function (error) {
return response.error("You must create a character before you can battle! " + error);
}
)
});
但是,我根本無法保存此字符的任何更改。我發現的所有文檔和論壇帖子都表明,如果您在通過身份驗證時調用Cloud Code函數,那麼該函數應該具有與用戶調用它相同的級別權限。
這段代碼唯一的工作是如果我設置字符的ACL爲公共寫。
有沒有人有任何想法,爲什麼這不會工作?
注:值得關注的是我可以在雲代碼功能是由身份驗證的用戶6MwfSLdAxd
稱爲我得到這個錯誤(如果我添加一個response.error調用)服務器日誌中看到:
error: Failed running cloud function startBattle for user 6MwfSLdAxd with:
Input: {}
Error: {"code":141,"message":"Messed up: [object Object]"} functionName=startBattle, code=141, message=Messed up: [object Object], , user=6MwfSLdAxd
error: Error generating response. ParseError { code: 141, message: 'Messed up: [object Object]' } code=141, message=Messed up: [object Object]
[object Object]
[object Object]