2015-10-12 57 views
0

我有一個班級「團隊」,可以有很多用戶。Parse.com上的多對多關係Cloud Code

每當用戶被添加到團隊中時,我需要創建一個從/到關係。每個用戶都可以評分並被所有隊友評分。

這是我的雲代碼。我似乎無法得到這個工作。

// add Team relations for every saved player 
Parse.Cloud.afterSave("Team", function(request) { 

    // Team being saved 
    var team = request.object, 
     relation = team.relation("players"), 
     query = relation.query(); 

     query.find({ 

      // players on this Team 
      success: function(results) { 

       // all players on this Team 
       var i, j, player, teammate; 
       for (i = 0; i < results.length; i++) { 
        player = results[i]; 

        // for each player add a new Rate relation (from/to) 
        for (j = 0; j < results.length; j++) { 
         teammate = results[i]; 

         // if it's same player, escape relation 
         if (player == teammate) { continue; } 

         var Rate = Parse.Object.extend("Rate"), 
          rate = new Rate(); 

         // create the relation from this player 
         var fromRelation = rate.relation('from'); 
          fromRelation.add(player); 

         // to every other player on the team 
         var toRelation = rate.relation('to'); 
          toRelation.add(teammate); 

          rate.save(null, { 
           success: function(_team) { 

           }, 
           error: function(_team, error) { 

           } 
          }); 
        } 
       } 

       response.success('rate relation success'); 

      }, 
      error: function(error) { 
       response.error('rate relation error'); 
      } 
     }); 

}); 

向隊中添加球員效果很好,它運行在客戶端。在數據瀏覽器

課程設置: Team Class Rate Class

回答

1

你的類是 「價格」,但您要使用此代碼:

var Rate = Parse.Object.extend("Rate"), 
         rate = new Rate(); 

變化

var Rate = Parse.Object.extend("Rates"), 
         rate = new Rate(); 

此外,請確定您的對象是在添加關係之前創建的。

     var Rate = Parse.Object.extend("Rate"), 
         rate = new Rate(); 

          [.... MOVED BELOW .....} 

         rate.save(null, { 
          success: function(_team) { 
          [.... now create and save relations ...] 
          }, 
+0

感謝沒收,仍然沒有成功,雖然,沒有新行創建 – Chris

+0

您可以登錄我們的錯誤,讓我知道他們是什麼? –

+0

不幸的是,沒有錯誤拋出:/ – Chris

0

解決了這個問題。

唯一討厭我的事實是,如果我嘗試,我得到一個錯誤:

「fromRelation期待_user,卻得到了_Team」,爲什麼呢?

player = results[i]; 
var fromRelation = rate.relation('from'); 
fromRelation.add(player); 

我要創建2個新的增值經銷商,fromPlayer和頂層,雖然它看起來愚蠢到我,反正它的工作原理。

Parse.Cloud.define("updateTeamPlayers", function(request, response) { 
    var Team = Parse.Object.extend("Team"), 
     team = new Team(); 
     team.id = request.params.id; 

    var relation = team.relation("players"), 
     query = relation.query(); 

    query.find({ 
     success: function(results) { 
      var i, j, player, teammate, queryArray = [], teammateRes = results; 

      for (i = 0; i < results.length; i++) { 
       player = results[i]; 

       // for each player add a new Rate relation (from/to) 
       for (j = 0; j < teammateRes.length; j++) { 
        teammate = teammateRes[j]; 

        // if it's same player, escape relation 
        if (player == teammate) { continue; } 

        var Rate = Parse.Object.extend("Rates"), 
         rate = new Rate(); 

        // create the relation from this player 
        var fromPlayer = new Parse.User(); 
         fromPlayer.id = player.id; 

        var fromRelation = rate.relation('from'); 
         fromRelation.add(fromPlayer); 

        // to every other player on the team 
        var toPlayer = new Parse.User(); 
         toPlayer.id = teammate.id; 

        var toRelation = rate.relation('to'); 
         toRelation.add(toPlayer); 

        queryArray.push(rate); 
       } 
      } 

      Parse.Object.saveAll(queryArray, { 
       success: function(_allsaved) { 
        response.success('rate save success:' + _allsaved); 
       }, 
       error: function(error) { 
        response.error('rate save error:' + error + ' =|= ' + error.message); 
       } 
      }); 

      // end suucess 
     }, 
     error: function() { 
      response.error("team failed"); 
     } 
    }); 
}); 
+0

嘿克里斯,它現在工作的原因是因爲你現在已經創建並獲得了你正在與之建立關係的對象。之前,您試圖與「不存在」的對象建立關係。 –