Как правильно структурировать код Java для сохранения значений под именованным ключом в базе данных Firebase Realtime - PullRequest
0 голосов
/ 29 января 2019

В настоящее время я пишу часть приложения, где пользователь сканирует QR-код, который содержит значение UID пользователя.После сканирования я хочу создать новый ключ в моей базе данных Firebase Realtime, содержащий информацию, связанную с пользователем с этим UID, с именем userInformation.Ниже приведен пример формата, который я хочу, чтобы значения были сохранены как:

enter image description here

В настоящее время он хранится без ключа userInfromations, онхранится только с UID, вот так: enter image description here

Вот соответствующий код:

case FirebaseVisionBarcode.TYPE_TEXT:
            {
                final DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
                userInformations = new ArrayList<>();
                DatabaseReference username = ref.child(item.getRawValue()).child("username");
                DatabaseReference dateOfBirth = ref.child(item.getRawValue()).child("dateOfBirth");

                username.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        String username = dataSnapshot.getValue(String.class);
                        //Toast.makeText(getApplicationContext(),username, Toast.LENGTH_LONG).show();

                        //it will create a unique id and we will use it as the Primary Key for our UserInfo
                        String id1 = ref.push().getKey();

                        //creating an UserInfo Object
                        UserInformation userInformation = new UserInformation(id1, username);

                        //Saving the Artist
                        ref.child(id1).setValue(userInformation);

                        //displaying a success toast
                        Toast.makeText(getApplicationContext(), username + " has been added", Toast.LENGTH_LONG).show();
                    }

Я также понимаю, что, изменив:

final DatabaseReference ref = FirebaseDatabase.getInstance().getReference();

to:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("userInformations");

Я могу получить ключ с именем userInformations, но он больше не сохраняет значение для userInformationName, как показано ниже:

enter image description here

В данный момент я просто не уверен, как структурировать свой код, чтобы получить обе эти вещи.

1 Ответ

0 голосов
/ 29 января 2019

Согласно последним комментам, для получения схемы, которая выглядит следующим образом:

rootRef
  |
  --- userInformations
         |
         --- pushId
              |
              --- "userInformationId: "-LXO5 ... H-o3-P" 
              |
              --- "userInformationName: "spamemail0100@gmail.com"

Пожалуйста, используйте следующие строки кода:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userInformationsRef = rootRef.child("userInformations");
String userInformationId = userInformationsRef.push().getKey();
String userInformationName = "spamemail0100@gmail.com";
UserInformation userInformation = new UserInformation(userInformationId, userInformationName);
userInformationsRef.child(userInformationId).setValue(userInformation);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...