我将我的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)
更改为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
答案 0 :(得分:1)
您的问题可能是您不应该将Parse.Cloud.useMasterKey()
与解析服务器一起使用。相反,您应该在查询中设置主密钥,例如query.get(projectId, {useMasterKey: true, success: fun...}}
。
那说错误对象为空是奇怪的。应该有消息unauthorized
。
编辑:请尝试使用此语法来处理错误函数:error: function(model, error) { console.log(error); }