Android - 使用密钥查询节点(Firebase)

时间:2017-11-26 12:35:46

标签: java android firebase firebase-realtime-database

我有一个使用GoogleMaps功能的应用程序。所以在我的应用程序中,我能够绘制两个标记之间的路径,并在地图上设置常规标记。

我拥有的数据库结构是:

  • 一条路径可以有多个标记
  • 一个标记有一条路线

为了解决这个问题,我有一个数据库结构如下:

enter image description here

问题:是否可以使用markerId节点中的密钥query markers节点中的相应标记?

1 个答案:

答案 0 :(得分:2)

试试这个:

final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference reference = database.getReference("routes").child("-KzdUTraH1BodJMuEnSu").child("markerId");
ValueEventListener ref=new ValueEventListener(){
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot data : dataSnapshot.getChildren()){
            String x=data.getKey();

        DatabaseReference datas=database.getReference().getInstance().child("markers");
        datas.orderByKey().equalTo(x).addValueEventListener(new ValueEventListener()){
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                //code here
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
               throw databaseError.toException();
            }
        });
      }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
};
reference.addValueEventListener(ref);

在第一个查询中,您要查询位置markerId,然后获取for loop内的密钥并使用另一个查询中的密钥检查它是否与节点内的密钥相同{ {1}}