我有两个类之间的指针关系,我需要获取A类思想类B.当我使用Rest和Android SDK时它工作正常,但我在CloudCode中构建一个函数,它需要在那里工作
任务(指向) ExtraTasks
我需要获取给定任务所指向的所有ExtraTasks。
有什么想法吗? TKS
构造指针(关系?)的JSON。该关系是通过 REST api 构建的。
{"taskExtraTasks":
{
"__op":"AddRelation",
"objects":
[
{
"__type":"Pointer",
"className":"Tasks",
"objectId":"TASK_ID"
}
]
}
}
CloudCode 获取关系。 (考虑 JackalopeZero 的建议)
Parse.Cloud.define("extras", function(request, response) {
var taskId = "0n5svlATjG";
var taskQuery = new Parse.Query("Tasks");
taskQuery.get(taskId).then(function(task){
var taskRelationQuery = task.relation("taskExtraTasks");
taskRelationQuery.equalTo("taskExtraTasks", task);
return taskRelationQuery.find();
})
.then(function(extraTasks){
// your extra tasks are now accessible here
response.success( extraTasks );
},function(error){
response.error( error );
});
});
响应:
{
"code": 141,
"error": "{\"code\":101,\"message\":\"Object not found.\"}"
}
注意:以下答案是正确的,尽管我的问题有点复杂。我错了 Relation 和 Pointer ,由于REST文档中缺少信息,我无法理解它。如果你被困在我身上,我建议使用Parse UI创建指针和关系。之后,您可以使用REST来处理这些问题。 使用UI创建指针列后,可以使用JSON obj通过REST添加点:
// Pointer CLASS_A -> CLASS_B
// Method: "PUT" , path: classes/CLASS_B/CLASS_B_OBJECT_ID
{"pointerName":
{
"__type" :"Pointer",
"className" :"CLASS_A",
"objectId" :"CLASS_A_OBJECT_ID"
}
}
答案 0 :(得分:1)
如果您只是查询,则无需扩展。你可以改变:
var ExtraTasks = Parse.Object.extend("ExtraTasks");
var qExtra = new Parse.Query(ExtraTasks);
为:
var qExtra = new Parse.Query("ExtraTasks");
此外,只需确保如果您在Parse中使用指针查询,则需要确保使用Parse对象进行查询,而不仅仅是ID。
例如,如果任务列是类型指针,则不起作用:
var taskId = "13jkasd";
var userQuery = new Parse.Query(Parse.User);
userQuery.equalTo("task", taskId);
return userQuery.find();
您需要使用:
var taskId = "13jkasd";
var taskQuery = new Parse.Query("Task");
taskQuery.get(taskId).then(function(task){
var userQuery = new Parse.Query(Parse.User);
userQuery.equalTo("task", task);
return userQuery.find();
})
最后一件事可能是问题:
您的代码似乎指出task
和extraTask
qExtra.equalTo("taskExtraTasks", task );
如果要查询关系,则需要稍微改变一下。将关系视为未在界面上显示的连接表,您需要查询该连接表。
var taskId = "0n5svlATjG";
var taskQuery = new Parse.Query("Task");
taskQuery.get(taskId).then(function(task){
var taskRelationQuery = task.relation("taskExtraTasks");
taskRelationQuery.equalTo("task", task);
return taskRelationQuery.find();
})
.then(function(extraTasks){
// your extra tasks are now accessible here
});
有关关系的更多信息,请查看Parse JS developers guide.
<强> BUT ... 强>
此处的问题似乎源于您评论中的代码。您正在关系中添加指针。如果你有一对多的关系,你不需要触摸关系,你只需要在任务表中使用指针列。只需使用指向任务的指针创建新的extraTask。这样你就可以在你的代码中使用我的原始答案(但更重要的是,这将是创建这种关系的正确方法)