gpt4 book ai didi

javascript - 如何使用指针在 Parse CloudCode 中查询?

转载 作者:行者123 更新时间:2023-12-03 08:46:08 25 4
gpt4 key购买 nike

我在两个类之间有一个指针关系,我需要获取类 A 和类 B。当我使用 Rest 和 Android SDK 时,它工作得很好,但我正在 CloudCode 中构造一个函数,它需要在那里工作。

任务(指向)额外任务

我需要获取给定任务指向的所有 ExtraTasks。

有什么想法吗?谢了

  • 指针键:taskExtraTasks
  • “父”类:任务
  • “子”类:额外任务

任务及其关系 Tasks class

taskExtraTask 关系内部 enter image description here

构造指针(关系?)的 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.\"}"
}

注意:下面的答案是正确的,尽管我的问题有点复杂。由于 REST 文档中缺乏信息,我弄错了关系指针,并且无法理解它。如果您和我一样陷入困境,我建议使用 Parse UI 创建指针和关系。之后您可以使用 REST 来处理这些问题。使用 UI 创建 Pointer 列后,您可以使用 JSON 对象通过 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"
}

}

最佳答案

如果您只是查询,则无需扩展。您可以更改:

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();
})

最后一件事可能是问题:

您的代码似乎指出 taskextraTask 之间存在一对多关系

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.

但是...

这里的问题似乎源于您评论中的代码。您正在关系中添加一个指针。如果您有一对多关系,则无需接触关系,只需使用任务表中的指针列即可。只需创建带有指向任务的指针的新 extraTask 即可。这样您就可以在代码中使用我的原始答案(但更重要的是,这将是创建这种关系的正确方法)

关于javascript - 如何使用指针在 Parse CloudCode 中查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32879326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com