在Firebase中存储数组/在Firebase中查询多个字符串

时间:2018-08-15 14:44:15

标签: java android firebase firebase-realtime-database

是否可以在firebase中查询多个字符串,或将数组存储到firebase数据库中?

我想获取不同节点的字符串值。这是我的结构:

msg {
  msg1: "some string"
  msg2: "another string"
  msg3: "yet another"
}

我想获取这3条消息的值,我该如何实现?我是Firebase数据库基础的新手。

1 个答案:

答案 0 :(得分:0)

要在一个节点上保存多个字符串,可以使用地图

Map<String,Object> map = new HashMap<>();
map.put("msg1","some string");
map.put("msg2","another string");
map.put("msg3","yet another");
yourRef.setValue(map);

要一起检索这些数据,您可以用这种方法来完成,创建一个pojo

public class DataPojo {
    //Make sure this variables types match exactly your firebase variable names
    private String msg1;
    private String msg2;
    private String msg3;

    public DataPojo() {

    }


    public String getMsg1() {
        return msg1;
    }

    public void setMsg1(String msg1) {
        this.msg1 = msg1;
    }

    public String getMsg2() {
        return msg2;
    }

    public void setMsg2(String msg2) {
        this.msg2 = msg2;
    }

    public String getMsg3() {
        return msg3;
    }

    public void setMsg3(String msg3) {
        this.msg3 = msg3;
    }



}

然后检索任何类似这样的消息

yourRef.addValueEventListener(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
    for(DataSnapshot snapshot: dataSnapshot.getChildren()){
   DataPojo dp = snapshot.getValue(DataPojo.class);
   String msg1  = dp.getMsg1();
   String msg2 = dp.getMsg2();
   String msg3 = dp.getMsg3();

}

  }

  @Override
  public void onCancelled(DatabaseError databaseError) {
    System.out.println("The read failed: " + databaseError.getCode());
  }
});

yourRef是您要发布数据以及从中获取数据的位置。它是用这种方式创建的

DatabaseReference yourRef = FirebaseDatabase.getInstance().getReference();