我的主要节点Employees有3个值:Mob。没有,UserPIN和empID。如果输入的UserPIN存在于thos节点下,我需要检查我的一个活动。我不能通过使用:
来做到这一点if(datasnapshot.child(enteredUserPIN).exists(){
}
而且我在检查Mob时也无法更改节点布局。没有。以及另一项活动。另外我不能直接给道路直到暴徒。没有。 请指导。
员工节点:
修改
我的代码:
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
答案 0 :(得分:0)
如果无法更改当前的表格布局。您应该创建一个单独的节点,您只需将所有引脚作为键值对,例如Pin作为键,真值作为值。你可以检查引脚是否存在
答案 1 :(得分:0)
要解决此问题,您需要在Query
对象上使用exists()
和DataSnapshot
方法,如下所示:
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);
根据您的编辑,请使用以下代码:
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);