获取现有的 firebase 子密钥

Posted

技术标签:

【中文标题】获取现有的 firebase 子密钥【英文标题】:Getting the existing firebase child key 【发布时间】:2019-03-12 14:52:21 【问题描述】:

我想检查日期键是否已经存在然后显示 Toast else 上传出勤。如果出勤子键已经存在..

DBreference.addChildEventListener(new ChildEventListener() 
               @Override
               public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) 

                   //i want to check if data is available along with the key which is "date".
                   //then show msg data already exists else upload the attendance

                   date = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date());
                   String present = "Present";
                   DBreference.child("Attendance").child(date).setValue(present);
                   Toast.makeText(ProfileAct.this, "Marked as Present", Toast.LENGTH_SHORT).show();
               

               @Override
               public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) 

               

               @Override
               public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) 

               

               @Override
               public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) 

               

               @Override
               public void onCancelled(@NonNull DatabaseError databaseError) 

               
           );

【问题讨论】:

好的。对不起.. 【参考方案1】:

试试这个

FirebaseDatabase.getInstance().getReference().child("Users").child(FirebaseAuth.getInstance().getUid()).addValueEventListener(new ValueEventListener() 
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) 
                if (dataSnapshot.exists()) 
                    if (dataSnapshot.child("Attendance").exists()) 
                        Toast.makeText(ProfileAct.this, "Already Exists", Toast.LENGTH_SHORT).show();
                     else 
                        date = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date());
                        String present = "Present";
                        dataSnapshot.child("Attendance").child(date).setValue(present);
                    
                
            

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) 

            
        );

希望对你有帮助!

谢谢。

【讨论】:

【参考方案2】:
 AttendRef.addValueEventListener(new ValueEventListener() 
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) 
                      if (dataSnapshot.exists())
                          Toast.makeText(ProfileAct.this, "Already Exists", Toast.LENGTH_SHORT).show();
                      
                      else 
                          String val="Present";
                          AttendRef.child(date).setValue(val);
                      
                

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) 

                
            );

【讨论】:

以上是关于获取现有的 firebase 子密钥的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在 Firebase 中获取子密钥

Firebase实时数据库如何在没有密钥的情况下获取子记录

如何在现有的 Firebase json 结构下添加子节点?

获取 Firebase 电话身份验证 OTP 时出错

如何使用密钥检索firebase中的子数据?

Firebase 按值获取子名称并将其删除