如何检查Firebase实时数据库中是否存在子子项? [英] How to check if sub child exists in Firebase Realtime Database?
问题描述
我的主节点Employees具有3个值:Mob.编号,UserPIN和empID.我需要检查我的活动之一,以确保输入的UserPIN是否在thos节点下.我无法通过使用以下方法来做到这一点:
My main node Employees has 3 values: Mob. no., UserPIN and empID. I need to check in one of my activities that if the entered UserPIN exists under thos node or not. I am not able to do this by using:
if(datasnapshot.child(enteredUserPIN).exists(){
}
在检查Mob时,我也无法更改节点布局.不.以及另一项活动.另外,我无法直接给出路径,直到暴民.不.请指导.
And also I can't change my node layout as I am checking for the Mob. no. as well in another activity. Plus I can't directly give the path till the Mob. no. Please guide.
雇员节点:
编辑
我的代码:
private void mpinexists(){
Log.d("abcd","mpinexists() reached");
checkmPINRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds:dataSnapshot.getChildren()){
if(ds.child(enteredmPIN).exists()){
Toast.makeText(getActivity(),"mPIN already exists",Toast.LENGTH_SHORT).show();
Log.d("abcd","mpin already exists");
}
else{
Log.d("abcd","mpin doesn't exists");
Toast.makeText(getActivity(),"mPIN doesn't exists",Toast.LENGTH_SHORT).show();
}
}
}
我的日志:
04-25 21:53:28.889 10147-10147/com.example.abcd.efg D/abcd: mpinexists() reached
04-25 21:53:31.471 10147-10147/com.example.abcd.efg D/abcd: mpin already exists
04-25 21:53:31.472 10147-10147/com.example.abcd.efg D/abcd: mpin doesn't exists
推荐答案
为解决此问题,您需要在像这样的 DataSnapshot
对象:
In order to solve this, you need to use a Query
and exists()
method on the DataSnapshot
object like this:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef
.child("Employees")
.child(mobileNumber) //Could be: 765432189
.child(userPin) //Could be: 123457
.orderBychild("empid")
.equalsTo(enteredUserPIN);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()) {
//Do something
} else {
//Do something else
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
query.addListenerForSingleValueEvent(valueEventListener);
根据您的修改,请使用以下代码:
According to your edit, please use the follwing code:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference employeesRef = rootRef.child("Employees");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
if(ds.child(enteredUserPIN).exists()) {
//Do something
} else {
//Do something else
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
employeesRef.addListenerForSingleValueEvent(valueEventListener);
这篇关于如何检查Firebase实时数据库中是否存在子子项?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!