解析服务器云代码 - 以前工作的查询所有 return 未定义的错误
Parse-server cloud code - previously working queries all return undefined errors
我将我的 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)
,最后我得到了一个错误,我对此进行了一些研究,现在我意识到我的项目 class (我试图在上面进行操作)从未收到任何类型的许可。没有角色或 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
您的问题可能是您不应该将 Parse.Cloud.useMasterKey()
与解析服务器一起使用。相反,您应该像这样 query.get(projectId, {useMasterKey: true, success: fun...}}
.
在查询中设置主键
也就是说,错误对象为空很奇怪。应该有消息 unauthorized
.
编辑:为您的错误函数尝试以下语法:error: function(model, error) { console.log(error); }
我将我的 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)
,最后我得到了一个错误,我对此进行了一些研究,现在我意识到我的项目 class (我试图在上面进行操作)从未收到任何类型的许可。没有角色或 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
您的问题可能是您不应该将 Parse.Cloud.useMasterKey()
与解析服务器一起使用。相反,您应该像这样 query.get(projectId, {useMasterKey: true, success: fun...}}
.
也就是说,错误对象为空很奇怪。应该有消息 unauthorized
.
编辑:为您的错误函数尝试以下语法:error: function(model, error) { console.log(error); }