【发布时间】:2015-12-07 17:55:16
【问题描述】:
我正在尝试使用 Parse Cloud Code 并使用 Promise 来确保我消除了与 cals 异步有关的任何问题。我想查询一个类,取回一个对象,建立一些 JSON,然后查询对象的一些关系(标签、裁判)并将它们添加到 JSON 以返回 ExpressJS 进行渲染。我粘贴的代码不起作用,但我不明白为什么每次我都返回项目以获取下一个要查询的承诺。
编辑:
//Return a single project
Parse.Cloud.define('getProject', function(request, response) {
var projectUrl = request.params.projectUrl;
var project;
var projectsData = [];
var Projects = new Parse.Object("projects");
var query = new Parse.Query(Projects);
query.equalTo("projectUrl", projectUrl);
query.find().then(function(projectsResult) {
console.log(projectsResult.length + " Projects returned");
project = projectsResult[0];
var projectData = {
"id": project.get("id"),
"title": project.get("title"),
"previewImage": project.get("previewImage"),
"longDescription": project.get("longDescription"),
"shortDescription": project.get("shortDescription"),
"visibleToPublic": project.get("visibleToPublic"),
"dateStart": project.get("dateStart"),
"dateEnd": project.get("dateEnd"),
updatedAt: project.get("updatedAt"),
projectStatus: project.get("projectStatus")
};
projectsData.push(projectData);
console.log("Step 1. Projects Data: " + JSON.stringify(projectsData));
var tagsQuery = project.relation('tags');
return tagsQuery.query().find();
}).then(function(tags) {
var tagsData = [];
for(var t = 0; t < tags.length; t++) {
var tagData = {
"tag": tags[t].get("tag"),
}
console.log("Tag Data: " + tagData);
tagsData.push(tagData);
}
projectsData[tags] = tagsData;
console.log("Step 2. Tags Data: " + JSON.stringify(tagsData));
var refereesQuery = project.relation('referees');
return refereesQuery.query().find();
}).then(function(referees) {
var refereesData = [];
for(var r = 0; r < referees.length; r++) {
var refereeData = {
"name": referees[r].get("name"),
"role": referees[r].get("role"),
"emailAddress": referees[r].get("emailAddress"),
"phoneNumber": referees[r].get("phoneNumber"),
"linkedInUrl": referees[r].get("linkedInUrl"),
}
console.log("Referee Data: " + refereeData);
refereesData.push(refereeData);
}
projectsData[referees] = refereesData;
console.log("Step 3. Referees Data: " + JSON.stringify(refereesData));
console.log("Everthing should be part of Projects Data here: " + JSON.stringify(projectsData));
response.success(projectsData);
}, function(error) {
response.error("Error: " + error);
});
});
【问题讨论】:
标签: javascript json parse-platform promise parse-cloud-code