web-dev-qa-db-fra.com

Mise à jour des données sur Firebase Android

Je souhaite mettre à jour la date sur Firebase sur un nœud spécifique.

Structure de la base de données:

 enter image description here

J'essaye comme

private void updateData() {
database = FirebaseDatabase.getInstance();
myref = database.getReference();
myref.child("myDb").child("awais@gmailcom").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        dataSnapshot.getRef().child("leftSpace").setValue(newValue);
        dialog.dismiss();

    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.d("User", databaseError.getMessage());
    }
});
}

Je veux mettre à jour la clé leftSpace avec la valeur newValue, newValue est le type de chaîne ici. Mais il ne met pas à jour la valeur dans Firebase. 

Si je donne ici 

dataSnapshot.getRef().child("leftSpace").setValue(765);

il met à jour bien. Mais je veux mettre à jour dans le format de chaîne sur la Firebase. 

J'ai sauvegardé les données sur Firebase de tous les types de chaînes. (Ma classe de modèle contient toutes les chaînes de type)

Pourquoi ne met-il pas à jour la variable newvalue de type ici?

Edit 1 Proposé par @Rjz Satvara

Votre méthode ajoute un nouveau noeud sous myDB en tant que

 enter image description here

Ce n'est pas mettre à jour le déjà un.

4
user6750923

Dans Firebase Pour mettre à jour une valeur spécifique, vous pouvez l'utiliser ...

     try {
           ref.child("myDb").child("awais@gmailcom").child("leftSpace").setValue("YourDateHere");
        } catch (Exception e) {
                e.printStackTrace();
       }
10
Rjz Satvara

Selon la documentation officielle de Firebase, vous pouvez mettre à jour le noeud spécifique du noeud parent de cette manière.

L'utilisation de setValue () de cette manière écrase les données à l'emplacement spécifié, y compris les nœuds enfants. Cependant, vous pouvez toujours mettre à jour un enfant sans réécrire tout l'objet. Si vous souhaitez autoriser les utilisateurs à mettre à jour leurs profils, vous pouvez mettre à jour le nom d'utilisateur comme suit:

    FirebaseDatabase  database = FirebaseDatabase.getInstance();
    DatabaseReference mDatabaseRef = database.getReference();

    mDatabaseRef.child("TABLE_NAME").child("orderStatus").setValue(2);

Remarque! TABLE_NAME signifie votre noeud parent dont vous voulez mettre à jour le noeud enfant.

 enter image description here

1
Sheharyar Ejaz

vous pouvez attribuer une nouvelle valeur au même enfant, comme

  Firebase firebase = new Firebase("your database link/myDb");
    firebase.child("[email protected]").child("leftSpace").setValue("newValue");
1
ATIK_FAYSAL