Java 检查一个节点中每个子节点是否存在的最佳方法是什么?

Java 检查一个节点中每个子节点是否存在的最佳方法是什么?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,这段代码运行得很好,但它很长,所以我想知道编写它的最佳方法 我想首先检查块节点的child是否等于我的UID如果是真的,那么我想检查我的UID的child是否等于特定UID如果是真的,那么我想在本例中得到块的值0 我该怎么做?非常感谢。只需遍历到使用子项指定的路径即可。如果路径不存在,则不会获得任何数据 FirebaseDatabase.getInstance().getReference("Block") .child("MyUUID") .child("specificUUI

这段代码运行得很好,但它很长,所以我想知道编写它的最佳方法

我想首先检查节点的child是否等于我的UID如果是真的,那么我想检查我的UID的child是否等于特定UID如果是真的,那么我想在本例中得到块的值0


我该怎么做?非常感谢。

只需遍历到使用
子项指定的路径即可。如果路径不存在,则不会获得任何数据

FirebaseDatabase.getInstance().getReference("Block")
    .child("MyUUID")
    .child("specificUUID")
    .addValueEventListener(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()) {
                // ... Do something
            } else {
                call_method();
            }
       // ... Other code
}

只需遍历到使用
child
指定的路径即可。如果路径不存在,则不会获得任何数据

FirebaseDatabase.getInstance().getReference("Block")
    .child("MyUUID")
    .child("specificUUID")
    .addValueEventListener(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()) {
                // ... Do something
            } else {
                call_method();
            }
       // ... Other code
}
试试这个:

Firebaseuser user=FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Block");
ref.child(user.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
       if(dataSnapshot.exist()){
          //checks first uid
           if(dataSnapshot.hasChild(seconduid){
               //checks if seconduid is there
                 for(DataSnapshot datas:dataSnapshot.getChildren()){
                      String blocks=datas.child("block").getValue().toString();

          }
      }

   }  

}

@Override
    public void onCancelled(DatabaseError databaseError) {
  }
});
这将检查第一个uid
if(dataSnapshot.exist())
,然后它将检查
uid
节点是否具有您提供的第二个uid
if(dataSnapshot.hasChild(seconduid){
,然后您将迭代并获取节点
尝试以下操作:

Firebaseuser user=FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Block");
ref.child(user.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
       if(dataSnapshot.exist()){
          //checks first uid
           if(dataSnapshot.hasChild(seconduid){
               //checks if seconduid is there
                 for(DataSnapshot datas:dataSnapshot.getChildren()){
                      String blocks=datas.child("block").getValue().toString();

          }
      }

   }  

}

@Override
    public void onCancelled(DatabaseError databaseError) {
  }
});

这将检查第一个uid
if(dataSnapshot.exist())
之后,它将检查该
uid
节点是否具有您提供的第二个uid
if(dataSnapshot.hasChild(seconduid){
然后您将迭代并获取节点

如果您读取位置
,快照将包含该位置下的所有内容。您无需重新查询每个子项。只需访问快照子项即可找到您要查找的数据。谢谢,我阅读了文档,但不知道如何查找我能看一下位置吗对不起,我是Firebase的初学者,你能帮我吗?使用“child”或“children”的方法。如果您读取位置
,则快照将包含该位置下的所有内容。您无需重新查询每个子项。只需访问快照子项即可找到您要查找的数据。谢谢,我阅读了文档,但不知道如何读取位置。抱歉,我是个新手Firebase中的r..你能帮我吗?使用引用“child”或“children”的方法。可能重复感谢,但这段代码中的问题是,当child不存在时,我想调用一个方法
call\u method()
,我如何调用它?很高兴知道这有帮助!答案也是根据您的建议编辑的。谢谢。谢谢,但这段代码中的问题是,当孩子不存在时,我想调用一个方法
call\u method()
,我怎么称呼它呢?很高兴知道这有帮助!答案也是根据你的建议编辑的。谢谢。谢谢帮助。我知道雷兹·默什的答案更简单。我给出的答案是你在问题中要求的,但好的,谢谢帮助。我知道雷兹·默什的答案更简单。我给出的答案是w你在问题中问了些什么,但没关系,很好