0

I am trying to put value in Realtime database child, but values name looks like -MzxnO09HqtrsYUdj2QW. I dont know how to change it to name, lastname and email. thanks all.

How it looks like.

User

|

  • -MzxnO08F4QyQTYlsBDG: "Mark"

  • -MzxnO09HqtrsYUdj2QV: "Drob"

  • -MzxnO09HqtrsYUdj2QW: "vadan40184@royins.com"

My code.

user = mAuth.getCurrentUser();
                    FirebaseDatabase database = FirebaseDatabase.getInstance();
                    DatabaseReference myRef = database.getReference().child("No server").child(user.getUid());
                    myRef.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot datasnapshot) {
                            Name = (String) datasnapshot.child("name").getValue().toString();
                            Lastname = (String) datasnapshot.child("lastName").getValue().toString();
                            Email = (String) datasnapshot.child("email").getValue().toString();

                            txt1.setText(Name);

                        }

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

                        }
                    });

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btnConnectToServer:
               
                    WifiManager wifiManager = (WifiManager) getActivity().getApplicationContext().getSystemService(Context.WIFI_SERVICE);
                    WifiInfo info = wifiManager.getConnectionInfo();
                    String ssid = info.getSSID();
                    serverName = ssid;

                    FirebaseDatabase database = FirebaseDatabase.getInstance();
                    DatabaseReference myRef = database.getReference().child(ssid);

                    myRef.child(user.getUid()).push().setValue(Name);
                    myRef.child(user.getUid()).push().setValue(Lastname);
                    myRef.child(user.getUid()).push().setValue(Email);

                    connectedToServer = true;

                    break;

        }
    }
  • you mean how to change a value of a variable? – Stultuske Apr 06 '22 at 08:02
  • How would you like to have the user node structured? Why would you use a pushed key for each value? Please respond with @AlexMamo – Alex Mamo Apr 06 '22 at 08:37
  • @AlexMamo I wanted to move or copy my user from 1 child to another but i couldn't understand how to do it so i decide to copy name, last name and email to string and create new user inside child i want. Sorry i am new to programing. –  Apr 06 '22 at 08:52

1 Answers1

0

When using push, you create an auto-generated key, see reference:

Create a reference to an auto-generated child location. The child key is generated client-side and incorporates an estimate of the server's time for sorting purposes.

The keys you see (like -MzxnO08F4QyQTYlsBDG) are those auto-generated child keys.

You probably want to use setValue or setValueAsync instead. You can find in-depth information about writing data to Firebase Realtime Database here in the docs.

b2m9
  • 591
  • 2
  • 9