0

我将 Parse 应用程序移至 Heroku 和 MongoLab。除了我的云代码查询外,一切正常。无论我调用哪个查询,都会调用错误块,并且错误对象是未定义的。

示例查询:

Parse.Cloud.beforeDelete("Project", function(request, response) {

    Parse.Cloud.useMasterKey();

    var projectId = request.object.id;

    var Project = Parse.Object.extend("Project");    
    var query = new Parse.Query(Project);

        query.get(projectId, {
            success: function(project) {

               //do some stuff with project
                response.success("Success!"); 

            },
            error: function(error) {
                console.log("Error Querying Deleted Project");
                response.error("Error!"); 
            }

        });

});

不仅仅是这个查询,其他查询也不起作用。这些查询在 Parse.com 上托管时有效。我没有改变它们。

编辑:

因此,我将语法从error: function(error)to更改为error: function(model, error)最终得到一个错误,我对此进行了一些研究,现在我意识到我的 Project 类(我在上面尝试操作)从未获得任何许可. 没有附加角色或 ACL。

以下是我创建角色的方式:

var roleName = "hasSound_" + ident;
var projectRole = new Parse.Role(roleName, new Parse.ACL());
projectRole.getUsers().add(creator); 

return projectRole.save().then(function(role) {

    var acl = new Parse.ACL();
    acl.setReadAccess(role, true); //give read access to Role
    acl.setWriteAccess(role, true); //give write access to Role

    project.setACL(acl);            
    project.save();

  });

这是我在尝试创建 Parse.Role 时收到的错误请求:

Mar 04 14:39:32 ancient-lake-41070 heroku/router: at=info method=POST path="/parse/classes/_Role" host=ancient-lake-41070.herokuapp.com request_id=82af3849-842a-406f-8a4b-5f573e08a1e1 fwd="54.145.36.110" dyno=web.1 connect=0ms service=6ms status=400 bytes=578

4

1 回答 1

1

您的问题可能是您不应该Parse.Cloud.useMasterKey()与解析服务器一起使用。相反,您应该像这样在查询中设置主键query.get(projectId, {useMasterKey: true, success: fun...}}

也就是说,错误对象为空很奇怪。应该有消息了unauthorized

编辑:为您的错误函数尝试以下语法:error: function(model, error) { console.log(error); }

于 2016-03-04T18:54:32.067 回答