如何在我的firebase数据库中发布我的数组?

时间:2017-05-16 08:39:57

标签: javascript angularjs firebase web-applications firebase-realtime-database

我正在开发一个基于本地联赛的幻想足球网络应用程序。到目前为止,当使用firebase auth创建用户时,我的firebase中使用用户uid创建了一个相应的节点,如下所示:

users:{
     user UID: {
                email:
                teamname:
                fullname:
                week:
              }
   }

我有一个名为$ scope.history的空数组和每个选定玩家的购买功能:

$scope.history = [];


$scope.buy = function(player) {

  $scope.total = 50000000;     

    //remove if already added
    var index = $scope.history.indexOf(player);
    if(index>=0){
        $scope.history.splice(index,1);
        return;
    }

    //max 6 allowed
    if($scope.history.length>=6){
        alert('max 6 allowed');
        return;
    }

    var selected = $scope.history.reduce(function(a,b){
        a[b.position] = (a[b.position] || 0) + 1;
        return a;
    }, {}) || {};

    if(!selected[player.position] || selected[player.position]<2){
        $scope.history.push(player);
    }else{
        alert('You can add only two players per position');
    }
  };

  $scope.getTotal = function(){
    return $scope.history.reduce(function(tot, p){
        tot = tot - p.price;
        return tot;
    }, $scope.total);
  };   

我的问题

我的问题是当用户选择6个玩家阵列(每个玩家都是JSON对象)时,如何将该阵列发布到&#34;周&#34;相应用户的用户UID父节点下的子节点?

我试过这样做但是没有成功:

    $scope.saveTeam = function(){
    var ref2 = firebase.database().ref("users/" + auth.uid + "/week"); 
     ref2.set($scope.history);
     };

有没有办法让每个用户的6个玩家选择被发布到&#34;周&#34;节点这样,每周,选择可以更改/更新?

1 个答案:

答案 0 :(得分:1)

尝试使用更新功能。如果您使用push或set,它将在一周内创建新节点,并且它将保留您的阵列,但如果您使用更新,它将直接存储。

const ref = firebase.database().ref('users').child(userUID).child('week');
ref.update($scope.history);

它将存储如下数据: enter image description here