Parse platform Can';无法在云代码中保存对象

Parse platform Can';无法在云代码中保存对象,parse-platform,parse-cloud-code,Parse Platform,Parse Cloud Code,在云代码中运行函数时出现问题。它应该检查对象是否存在,如果确实存在,则创建一个新用户: Parse.Cloud.define("createUser", function(request, response) { // Query the existing company by id var query = new Parse.Query(Parse.Object.extend("Company")); query.equalTo("objectId", request

云代码中运行函数时出现问题。它应该检查对象是否存在,如果确实存在,则创建一个新用户:

Parse.Cloud.define("createUser", function(request, response) {

    // Query the existing company by id
    var query = new Parse.Query(Parse.Object.extend("Company"));
    query.equalTo("objectId", request.params.company.existing.id);
    query.find().then(function(result){

        var user = new Parse.User();

        user.set("username", request.params.username);
        user.set("password", request.params.username);
        user.set("email", request.params.email);
        user.set("permissions", ["User"]);

        var company = result[0];

        user.signUp(null, {
            success: function(user){
                // Asign company ACL for User write permission
                var cACL = company.getACL();
                cACL.setWriteAccess(user.id, true);
                company.setACL(cACL);
                // Save company
                company.save();
                console.log(company);

                // Establish user-company relationship
                var cRelation = user.relation("associated");
                cRelation.add(company);
                // Save user
                user.save();
                console.log(user);

                // Finish
                response.success(user);
            },
            error: function(user, error){
                response.error(JSON.stringify({code: -8000, message: "User creation failed"}));
            }
        });

    }, function(error){
        response.error(JSON.stringify({code: -8001, message: "Invalid company"}));
    });

});
我首先查询解析是否存在所述对象。如果它确实存在,我将使用收到的参数创建一个新用户。在用户创建的完成块中,我分配适当的ACL(到公司对象),然后保存它们。这时我遇到了第一个问题:未保存ACL(在仪表板中选中)。I
console.log
公司进行调试,显示ACL设置正确。因此,我认为这一定是一个保存问题。

注意:用户已创建,但我以后尝试执行的任何操作都无效。

稍后,我将此对象添加到以前在仪表板中定义的关系中,但我有相同的问题:仪表板中不会出现关系,即使当我
console.log
对象时,它显示关系已正确设置。


我在这里迷路了。我不明白为什么这不起作用,我已经阅读了大量的在线文档,仍然找不到答案。

好的,经过一天的工作,我终于发现了我的问题。我在任何地方都设置了ACL,我没有保存试图保存的对象的特权所以储蓄确实失败了

我应该注意,如果您遇到与我相同的问题,您可以使用主键轻松解决。为此,您需要在执行任何必须经过身份验证的请求之前调用
Parse.Cloud.useMasterKey()

这只适用于云代码,当您使用主密钥时,您应该明确知道自己在做什么,因为它基本上为任何人、任何地方、任何事情提供读写权限。因此,请确保您的逻辑是完美的,因为如果不明智地使用它,您可能会遇到严重的安全问题。正如本叔叔所说:权力越大,责任越大


希望这对其他人有所帮助。

对于2017年阅读本文的任何人,我想提及的是,
Parse.Cloud.useMasterKey()
已停止,您应该将
{useMasterKey:true}
作为您希望运行的任何函数的选项。