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

8 浏览
0 Comments

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

这段代码能正常运行,但是非常冗长,所以我想问问有没有更好的写法?

我想首先检查Block节点是否有子节点等于my UID,如果是,则检查my UID是否有子节点等于specific UID,如果是,则获取block的值,该例中为0

我该如何实现?非常感谢。

0
0 Comments

问题的原因是需要检查一个节点中的每个子节点是否存在。解决方法是使用Firebase数据库的监听器和查询方法来检查节点和子节点的存在。

以下是解决方法的代码:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Block");
ref.child(user.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.exist()) {
            // 检查第一个uid
            if (dataSnapshot.hasChild(seconduid)) {
                // 检查是否存在第二个uid
                for (DataSnapshot datas : dataSnapshot.getChildren()) {
                    String blocks = datas.child("block").getValue().toString();
                }
            }
        }
    }
    public void onCancelled(DatabaseError databaseError) {
    }
});

这段代码首先获取当前用户的uid,并创建对应节点的引用。然后,使用`addListenerForSingleValueEvent`方法添加一个监听器,当数据发生变化时,将触发`onDataChange`方法。

在`onDataChange`方法中,首先检查第一个uid是否存在,使用`exist()`方法。然后,使用`hasChild()`方法检查第一个uid节点中是否存在第二个uid。如果存在,则使用`getChildren()`方法迭代遍历所有子节点,并获取节点中的"block"数据。

感谢帮助,我看到Reaz Murshed的答案更简单。

0
0 Comments

问题的出现原因:在给定的节点中检查每个子节点的存在性。

解决方法:遍历到指定的路径,使用child方法。如果路径不存在,将得到空数据。可以使用addValueEventListener方法来监听数据的变化,如果数据存在,则执行相应的操作,否则调用call_method()方法。

FirebaseDatabase.getInstance().getReference("Block")
    .child("MyUUID")
    .child("specificUUID")
    .addValueEventListener(new ValueEventListener() {
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()) {
                // ... 执行某些操作
            } else {
                call_method();
            }
            // ... 其他代码
});

感谢你的回答!问题中提到的代码存在一个问题,即当子节点不存在时,我想调用一个方法call_method(),请问如何调用它?

非常感谢你的帮助!根据你的建议,答案已经进行了编辑。谢谢。

0