繁体   English   中英

如何检查 firebase 数据库中已经存在的数据

[英]How to check Already existing data in firebase database

我想检查 firebase 数据库中是否已经存在 classection=Six:B 然后它显示 toast 消息请指导我试图从 3 天开始解决这个问题但我无法解决这是我的代码它没有显示任何错误或 toast

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");
Query query = ref.child("Students");
query.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String  classsection=""+dataSnapshot.child("classsection").getValue();
        if(classsection.equals("Six:B"))
        {
            Toast.makeText(MaintabclasActivity.this, "Class Six B is Already Exist", 
                            Toast.LENGTH_LONG).show();
        }
        else
        {
           // updateclasfiveb();

        }

    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
        Toast.makeText(MaintabclasActivity.this, "error", 
                   Toast.LENGTH_LONG).show();
    }
});
  

在此处输入图像描述

Firebase 中的查询由两部分组成:

  1. 在其键或某个属性上对路径的子节点进行排序的调用。
  2. 调用然后按某个值或范围向下过滤子节点。

在你的情况下:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users/Students");
Query query = ref.orderByChild("classsection").equalTo("Six:B");

query.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if(dataSnapshot.exists()) {
            Toast.makeText(MaintabclasActivity.this, "Class Six B is Already Exist", Toast.LENGTH_LONG).show();
        }
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
        Toast.makeText(MaintabclasActivity.this, "error",  Toast.LENGTH_LONG).show();
    }
});

如果您真的想访问实时数据库,请使用 onCompleteListener 获取一次数据,而不是 addListenerForSingleValueEvent。 因为 addListenerForSingleValueEvent 用于缓存数据。

//  If you have child node id to go through each node use below method.
    
    DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");
        
        
        ref.child("Students").child("node_id_under_student").get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<DataSnapshot> task) {
                if (!task.isSuccessful()) {
                    Log.e("firebase", "Error getting data", task.getException());
                }
                else {
                    Log.d("firebase", String.valueOf(task.getResult().getValue()));
                }
            }
        });
    

// 或者使用带有 ValueEventListener 的查询方法来监听数据库的变化。

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users/Students");
Query databaseQuery= ref.orderByChild("classsection").equalTo("Six:B");
    
    
   databaseQuery.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
           
         String  classsection=""+dataSnapshot.child("classsection").getValue();
        if(classsection.equals("Six:B"))
        {
            Toast.makeText(MaintabclasActivity.this, "Class Six B is Already Exist", 
                            Toast.LENGTH_LONG).show();
        }
        else
        {
           // updateclasfiveb();

        }}
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Getting Post failed, log a message
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
        // ...
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM