2016-12-09 6 views
0

Ich habe eine Datenbank mit automatisch generierten Primärschlüssel. Schauen Sie hier:Wie aktualisiere ich wo in der Firebase Echtzeitdatenbank?

data 
------0 
-----------id 
-----------name 
------1 
-----------id 
-----------name 

und so weiter.

Ich weiß nicht, Primärschlüssel und ich möchte Name nach spezifischer ID aktualisieren. Wie kann ich das machen?

+0

Wenn Ihre Einzelteile haben ihre eigene ID, warum speicherst du sie nicht unter dieser ID? Mit einer solchen Struktur wären Ihre Aktualisierungen so einfach wie 'ref.child (id) .setValue (...)'. –

+0

Ich habe gerade eine JSON-Datei aufgenommen und auf Firebase hochgeladen. Und dann Firebase hinzugefügt eigene IDs für meine Daten – d0pestar

+0

Ich empfehle mehr als das Hochladen einer JSON-Datei, wenn es um Datenmodellierung geht. Zum Beispiel könnten Sie Schlimmeres tun als das Lesen von [NoSQL-Datenmodellierung] (https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/) und das Anzeigen von [Firebase für SQL-Entwickler] (https : //www.youtube.com/playlist? list = PL1-K7zZEsYLlP-k-RKFa7RyNPa9_wCH2s), –

Antwort

1

dafür erstellen zunächst eine Klasse

public class User { 

int id; 
String name; 

public User(int id, String name){ 
    this.id = id; 
    this.name = name; 
} 

public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 
} 

dann das db Objekt Sie

DatabaseReference dbRef = firebaseDatabase.getReference("YOUR_DB_NAME"); 
Query query = dbRef 
      .orderByChild("id") 
      .equalTo("ID_OF_THE_USER"); 
    query.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) { 
       Log.d(TAG, dataSnapshot1.getKey() + " " + dataSnapshot1.getValue(Profile.class) 
         .toString()); 
       updateUser(dataSnapshot1.getKey(),"ID_OF_THE_USER", "New_Name"); 
       } 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

private void updateUser(DatabaseReference db,int key, String id, String name,) { 
    User user = new User(id, name); 
    Map<String, Object> postValues = post.toMap(); 
    Map<String, Object> childUpdates = new HashMap<>(); 
    childUpdates.put("/data/" + key, postValues); 
    db.updateChildren(childUpdates); 
} 

Hoffe, es wird Ihnen helfen, zu aktualisierenden bekommen ....

+0

Danke. Es hat mir wirklich geholfen. – d0pestar

Verwandte Themen