Firebase гарантирует, что запись не повторяется - PullRequest
1 голос
/ 30 марта 2020

У меня есть этот код:

public static void insertvote(String userkey, String categ, String candId) {
            DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
            DatabaseReference totalVotesRef = rootRef.child("votes").child(categ).child(candId);
            Vote vote = new Vote(userkey);
            totalVotesRef.push().setValue(vote.getVoterEmail());
    }

Предполагается добавить голоса в базу данных Firebase, в коллекции голосов, как показано ниже:

Firebase database Идея состоит в том, чтобы гарантировать, что избиратель голосует только один раз из-за честности, проверяя, существует ли его электронная почта в голосах. Однако, как видите, избиратель может голосовать дважды. Есть ли способ, которым я могу сделать функцию, которая проверяет, существует ли электронная почта в базе данных, и если она существует, скажите избирателю, что он не может проголосовать дважды? Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 30 марта 2020

Вы должны использовать UID Firebase Auth текущего пользователя в качестве имени дочернего ключа.

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
totalVotesRef.child(uid).setValue(vote.getVoterEmail());
0 голосов
/ 30 марта 2020

Я дам вам идею, подумайте об этом. Если вы используете Shared Preferences, вы можете поставить каждый адрес электронной почты с логическим флагом (True / False - Voted / not). Затем вы можете вызвать Shared Preferences и проверить логическое значение флага для каждого адреса электронной почты. Так что, если это правда - не позволяйте ему голосовать.

Wi sh Я помог:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...