我正在嘗試使用解析雲代碼並使用承諾來確保我消除了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);
});
});
這在fantasitcally @ Roamer-1888工作。現在我只需要找出如何查詢不同的類,並添加到我的數據的累積/ –
馬克,如果第三查詢僅依賴於'promise',那麼我的模式應該很好地擴展,以適應它。只需添加另一個'var xxxxPromise = project.relation ...'語句,將'xxxxPromise'添加到'Parse.Promise.when(...)',並以與'tags'和' referees'。 –
所以我想我遵循了你的建議,但沒有得到我期待的人口。我也嘗試鏈接承諾查詢更深,即 但也沒有工作。 我已經更新了我的代碼的跟進問題 http://stackoverflow.com/questions/34146245/returning-deeper-relations-in-parse-cloud-code-when-using-promises –