Я пытаюсь работать с Parse Cloud Code и использовать обещания, чтобы убедиться, что я устраняю любые проблемы с asals. Я хочу запросить класс, вернуть объект, создать JSON, затем запросить некоторые отношения объекта (теги, рефери) и добавить их в JSON, чтобы вернуться для ExpressJS для рендеринга. Код, который я вставляю, не работает, но я не понимаю, почему, если каждый раз я возвращаюсь к проекту для следующего обещания по запросу.Проблемы с Parse Cloud Code Promises
Edit:
//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);
});
});
Это работало фантазивно @ Роамер-1888. Теперь мне просто нужно выяснить, как запросить другой класс и добавить к моему наращиванию данные/ –
Марк, если третий запрос зависит только от 'prom', тогда мой шаблон должен хорошо расширяться для его размещения. Просто добавьте еще один оператор 'var xxxxPromise = project.relation ...', добавьте' xxxxPromise' в 'Parse.Promise.when (...)' и обработайте ответ тем же способом, что и теги '' и ' referees'. –
Итак, я думаю, что я последовал твоим советам, но не получил население, на которое я надеялся. Я также попытался связать обещание запросить глубже, то есть Но это тоже не сработало. Я обновил свой код по следующему вопросу http://stackoverflow.com/questions/34146245/returning-deeper-relations-in-parse-cloud-code-when-using-promises –