Как записать данные пользователя в базу данных Firebase только один раз? - PullRequest
0 голосов
/ 30 декабря 2018

Я хочу записать данные пользователя в базу данных только при первом входе в систему.Я не хочу, чтобы это было написано снова и снова.Я написал метод для этого, но у меня была проблема, потому что в цикле for было более одного значения.Как я могу решить эту проблему?

public void writeFirebase() {
    final Users users = new Users();
    final List<String> arrayList = new ArrayList<>();

    myRef.child("Users").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot ds : dataSnapshot.getChildren()) {
                arrayList.add(ds.getKey());

            }

            if (arrayList.size() > 0){
                for (String cur : arrayList) {
                    if (cur.matches(mUser.getUid())) {

                    } else {
                        Log.e("preee",""+cur);
                        if (mUser.getPhotoUrl() != null) {
                            users.setUserProfilPic(mUser.getPhotoUrl().toString());
                        }
                        if (mUser.getDisplayName() != null) {
                            users.setUserName(mUser.getDisplayName());
                        }
                        users.setUserId(mUser.getUid());
                        users.setUserPremium(false);
                        users.setUserPremiumDate("free");
                        users.setUserEmail(mUser.getEmail());

                        myRef.child("Users").child(mUser.getUid()).setValue(users);
                    }
                }
            }else {
                users.setUserId(mUser.getUid());
                users.setUserPremium(false);
                users.setUserEmail(mUser.getEmail());
                users.setUserName(mUser.getDisplayName());
                users.setUserProfilPic(mUser.getPhotoUrl().toString());
                users.setUserPremiumDate("free");
                myRef.child("Users").child(mUser.getUid()).setValue(users);
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
        }
    });
}

1 Ответ

0 голосов
/ 30 декабря 2018

Если вы хотите записать свои данные пользователя в базу данных один раз и запретить запись снова, вам просто нужно проверить, есть ли этот пользователь уже в вашей базе данных.(в этом ответе я считаю, что вы беспокоитесь о существовании вашего пользователя, это может быть что-то еще, например, может быть, вы не хотите, чтобы пользователь обновлял свой адрес электронной почты, если он уже вводился один раз.или нет.) для моего примера (существование пользователя) я приведу несколько ссылок, которые помогут вам проверить, есть ли пользователь в вашей базе данных.

Как искать, если имя пользователя существует в данной базе данных Firebase?

Как искать, если имя пользователя существует в данной базе данных Firebase?

Как проверить, существует ли значение в базе данных firebase - android

просто выполнить поиск и определить, есть ли ваш пользователь в вашей базе данных или нет.проверьте это перед любой операцией.если он не был, вы позволите ему продолжить.

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