Как сделать данные каждого пользователя отдельными, когда новый пользователь регистрируется с помощью Android Studio (java) Firebase Realtime Database?

Я работаю над проектом. Я хочу, чтобы данные каждого пользователя были отделены друг от друга. Я думаю, что у меня проблема с сохранением и получением данных из базы данных Firebase Realtime.

У меня есть две таблицы:

  • Пользователи

    • username, email, phone, password
  • Пароли

    • accountType, username, email, phone, password

Первый пользователь регистрируется, сохраняет свои пароли/данные и выходит из системы. И когда второй пользователь зарегистрируется, данные первого пользователя не будут видны второму.

Здесь сохраняются пароли/данные

String id = databaseReference.push().getKey();
        PasswordModel model = new PasswordModel(accountType, userName, email, phone, password);
        assert id != null;
        databaseReference.child(id).setValue(model);
        Toast.makeText(this, "Data Successfully Saved", Toast.LENGTH_SHORT).show();
        textClear();
        startActivity(new Intent(MainActivity.this, AllPasswordsActivity.class));

Здесь я устанавливаю для данных Recyclerview

public void setData() {
    binding.recyclerViewPasswords.setLayoutManager(new LinearLayoutManager(this));

    FirebaseRecyclerOptions<PasswordModel> options =
            new FirebaseRecyclerOptions.Builder<PasswordModel>()
            .setQuery(FirebaseDatabase.getInstance().getReference().child("passwords"), PasswordModel.class)
            .build();

    adapter = new PasswordAdapter(options);
    binding.recyclerViewPasswords.setAdapter(adapter);
}

person Muhammad Adeel    schedule 06.02.2021    source источник
comment
Где твой код? В противном случае кому-либо довольно сложно понять, в чем проблема   -  person James Z    schedule 06.02.2021
comment
Код работает. Но данные видны всем вновь зарегистрированным пользователям. Я не знаю точно, какой код я поделюсь.   -  person Muhammad Adeel    schedule 06.02.2021
comment
Что именно в этом коде работает не так, как вы ожидаете? Расскажите нам, что не так с общим кодом. У вас есть ошибки?   -  person Alex Mamo    schedule 08.02.2021
comment
Код работает. Нет ошибки. Но сохраненные данные были видны всем новым пользователям. Меня немного смутило сохранение и чтение данных из Firebase. Теперь проблема решена.   -  person Muhammad Adeel    schedule 10.02.2021


Ответы (1)


Я внес некоторые изменения в сохранение данных

FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
        userId = firebaseUser.getUid();
        final String id = databaseReference.push().getKey(); // AUTO GENERATING ID
        final PasswordModel model = new PasswordModel(accountType, userName, email, phone, password);
        databaseReference.child(userId).child(id).setValue(model);
        Toast.makeText(getApplicationContext(), "Data Successfully Saved", Toast.LENGTH_SHORT).show();
        textClear();
        startActivity(new Intent(MainActivity.this, AllPasswordsActivity.class));

И некоторые изменения в получении данных

public void setData() {
    binding.recyclerViewPasswords.setLayoutManager(new LinearLayoutManager(this));

    final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
    userId = firebaseUser.getUid();

    databaseReference.child(userId).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            if (snapshot.exists()) {

                FirebaseRecyclerOptions<PasswordModel> options =
                        new FirebaseRecyclerOptions.Builder<PasswordModel>()
                                .setQuery(FirebaseDatabase.getInstance().getReference().child("passwords").child(userId), PasswordModel.class)
                                .build();

                adapter = new PasswordAdapter(options);
                adapter.startListening();
                binding.recyclerViewPasswords.setAdapter(adapter);

            } else {
                Toast.makeText(AllPasswordsActivity.this, "No data available for this user, Save your data", Toast.LENGTH_LONG).show();
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {

        }
    });
}

Проблема решена.

person Muhammad Adeel    schedule 10.02.2021