Ниже приведен код JS, который в настоящее время работает для каждого пользователя. Игрок выбирает количество игроков (10) в пустой массив, а затем это сохраняется в usersRef2
месте в базе данных fireabse:
$scope.history=[];
$scope.total = 100000000;
var userId = firebase.auth().currentUser.uid;
let players = firebase.database().ref('players');
let usersRef2 = firebase.database().ref('users/' + userId +'/picked');
$scope.players = $firebaseArray(players);
//buying function
$scope.buy = function(player) {
//remove if already added locally
var index = $scope.history.indexOf(player);
if(index>=0 ){
$scope.history.splice(index,1);
return;
}
//max 10 allowed
if($scope.history.length>=10 || $scope.picked.length>=10){
alert('max 10 players allowed');
return;
}
//to make sure money doesn't go below $10,000,000
if($scope.total<0){
alert('Oops! You have run out of cash');
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]<4 && $scope.total>0){
$scope.history.push(player);
$scope.picked.push(player.id);
}else{
alert('You can add only four players per position');
}
};
А ниже приведен снимок моего узла firebase:
введите описание изображения здесь
Я могу использовать и работать с моим массивом выбранных игроков в $scope
, но когда я пытаюсь set
вернуть этот массив обратно в другую часть моего узла firebase, я получаю сообщение об ошибке ниже
Первый аргумент содержит недопустимый ключ ($ id) в свойстве users.hm60NktbcNdP7W1ECDzdJBqMfqW2.picked.0. Ключи должны быть непустыми строками и не могут содержать ".", "#", "$", "/", "[" Или "]"
Я новичок в Firebase и Angular JS, но я надеюсь, что возврат к узлу firebase может быть достигнут.