如何在Firebase中添加数组值

时间:2017-01-21 16:18:28

标签: android firebase firebase-realtime-database

我想将某些数据添加到Firebase作为数组。例如:

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

如何在Android中添加和读取Firebase中的数据?

2 个答案:

答案 0 :(得分:4)

当你有这样的结构时,你实际上不应该使用数组来建模它。它看起来更像是我眼中的

在Firebase中,数据库集最好建模为密钥,因为它可以自动保证项目是唯一的。那么你的结构就变成了:

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

真正的价值只是标记,因为Firebase不允许您存储没有值的密钥。

现在要添加一个组,您可以使用Firebase的setValue()功能:

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

答案 1 :(得分:0)

来自文档:

  

setValue() - 记录或更改存在值

如果您只想附加数据,可以使用updateChildren()

在Java中,如果我们知道数据类似于数组,则可以将其转换为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...
});

选中best practices post from the Firebase Blog