I am working on an application that allows users to influence the ranking of players and trends on a live table (fantasy football).

As you can see, you can promote or lower players (only if you are logged in and authenticated through Firebase (Google Accounts)). Otherwise, if you are not logged in, no votes are registered. It is currently working fine.
My question is , what would be the easiest way so that each user can only vote for a player once . The current implementation allows you to unlimitedly increase or decrease the votes for any player. I wish I could promote Tom Brady but not redirect him again. From now on, I could only change it without a vote (by clicking again) or downvote. I see that there is a user UID in firebase, so I could check if the UserUID voted from a specific player in the Firebase database or not before allowing the vote, but what if the user just wants to switch from vote to vote down?
Here's the code regarding voting -
downvotePlayer(playerId) { this.state.user ? this.database.child(playerId).transaction(function (player) { if (player) { player.votes-- } return player; }) : console.log("Must log in to vote") } upvotePlayer(playerId) { this.state.user ? this.database.child(playerId).transaction(function (player) { if (player) { console.log(player) player.votes++ } return player; }) : console.log("Must be logged in to vote.") }
Here's the layout on Firebase:

If I left all the critical points, please let me know and I will throw it into the essence. Thanks in advance.
Edit:
Source DB ref
this.database = firebase.database().ref().child('players');
When adding an add-on to the player, I do this:
this.database.child(playerId).transaction(function (player) { if (player) { var ref = firebase.database().ref('players').child('voters'); ref.child(uid).set(1); }
Which does almost what it needs, except that it creates a new node all together in firebase.

Voters must be inside a unique player above him. Is my problem obvious? I appreciate the help sir.