【发布时间】:2016-09-16 14:32:36
【问题描述】:
我在从 Cloud Code 函数保存对对象的更改时遇到问题。
我有一个名为 Character 的集合,其中有一个记录。
此字符记录有一个 ACL,具有 Public Read 和特定 ParseUser (6MwfSLdAxd) 的 Private Write Access。
在 Unity 中,我对用户进行了身份验证,然后调用 Cloud Code 函数,如下所示:
ParseCloud.CallFunctionAsync<Character>("startBattle", null).ContinueWith(t =>
{
Debug.Log("I got here...");
Debug.Log(t.Result.ClassName);
});
在我的 Cloud Code 函数中,我抓取了集合中的第一个字符(忽略检查它是否属于该用户,因为目前只有一个并且它确实属于该用户 - 也只有一个用户)。
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 设置为 Public Write。
有没有人知道为什么这不起作用?
注意:值得注意的是,当我收到此错误(如果我添加 response.error 调用)时,我可以在服务器日志中看到经过身份验证的用户 6MwfSLdAxd 正在调用云代码函数:
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]
【问题讨论】:
标签: unity3d parse-platform parse-cloud-code parse-server