我正在使用Parse的Cloud代碼來編寫一個將返回的方法和包含兩個子數組的數組。數組是一個團隊數組,另一個是包含這些團隊成員數組的數組。目的是獲得團隊及其團隊成員名單。數組將被傳遞到iOS前端進行顯示。解析雲代碼 - 使用關係數據嵌套多個查詢
我的數據目前是結構化的,因此有一個Team對象可以有多個用戶,但用戶只能有一個團隊。
這是我的雲功能,因爲它現在的生活:
var arrayOfUsers = [];
var arrayOfTeamMembers = [];
var arrayOfTeams = [];
Parse.Cloud.define("GetTopTeams", function(request, response) {
var query = new Parse.Query("Teams");
arrayOfTeams = [];
arrayOfTeamMembers = [];
fullArray = [];
query.find().then(function(teams) {
//returns a raw list of teams
return teams;
}).then(function(teams) {
arrayOfUsers = [];
teams.forEach(function(team) {
//add team to subArray1
arrayOfTeams.push(team);
//searches for all users within the team
var memberQuery = new Parse.Query(Parse.User);
memberQuery.equalTo('team', team);
memberQuery.find().then(function(tMember) {
//adds the team member to initial array
arrayOfUsers.push(tMember);
});
}).then(function(){
//pushes the finished array to the team member array
return arrayOfTeamMembers.push(arrayOfUsers);
}).then(function() {
return arrayOfTeams;
});
}).then(function() {
return response.success([arrayOfTeams, arrayOfTeamMembers]);
});
});
我能夠填充arrayOfTeams但得到的arrayOfTeamMembers被證明是困難的。有沒有更好的方法來嵌套它們?我嘗試過承諾,但對Javascript承諾不熟悉。我發現了類似的帖子,但沒有解決我遇到的問題。有什麼建議麼?
謝謝奧斯卡!代碼似乎工作,除了得到返回的teamId爲空。 user.get(「團隊」)將返回關係,但不是實際的Team對象。有什麼建議麼? – 2015-02-10 19:00:59
多米尼克,當你使用'memberQuery.include(「團隊」)'你說給解析帶來完整的對象(不僅是關係,或ID)。所以這個代碼應該工作,只要你有一個所有用戶的團隊。實際上,當我們使用'memberQuery.exists(「team」)',我們確保只有擁有團隊的用戶纔會被查詢。所以,沒有理由的錯誤。 – 2015-02-20 20:38:49
我使用類似的模型在我的環境中進行了測試,並且工作正常。也許如果你給我更多關於錯誤發生的信息,我可以幫你解決。 – 2015-02-20 20:44:39