Doge
Doge

Reputation: 863

How to add array value in Firebase

I want to add some certain data to a Firebase as arrays. Example:

groups : ['a','b','c']

How can I add and read data in Firebase from Android?

Upvotes: 3

Views: 6872

Answers (2)

Diego Venâncio
Diego Venâncio

Reputation: 6037

From the documentation:

setValue() - Record or change exists values

If you want to only append datas, you can to use updateChildren().

In Java, if we know that the data is array-like, it can be cast as a List:

Firebase julieRef = new Firebase("https://SampleChat.firebaseIO-demo.com/users/julie/");
julieRef.addValueEventListener(new ValueEventListener() {
   @Override
   public void onDataChange(DataSnapshot snapshot) {
       GenericTypeIndicator<List<String>> t = new GenericTypeIndicator?<List<String>>() {};
       List messages = snapshot.getValue(t);
       if( messages === null ) {
          System.out.println('No messages');
       }
       else {
          System.out.println("The first message is: " + messages.get(0) );
       }
   }

   // onCancelled...
});

Check this best practices post from the Firebase Blog.

Upvotes: 0

Frank van Puffelen
Frank van Puffelen

Reputation: 600141

When you have a structure like that, you actually shouldn't be using an array to model it. It seems much more like a set in my eyes.

In the Firebase Database sets are best modeled as keys, since that automatically guarantees that items are unique. So your structure then becomes:

groups: {
  "a": true,
  "b": true,
  "c": true
}

The true values are just markers, since Firebase won't allow you to store keys without a value.

Now to add a group to this, you'd use Firebase's setValue() function:

DatabaseReference root = FirebaseDatabase.getInstance().reference();
DatabaseReference groupsRef = root.child("groups");
groupsRef.child("d").setValue(true);

Upvotes: 4

Related Questions