Android 检查firebase中是否存在数据
你好 我想验证一个用户是否根据其学生id投票。我尝试将数据检索到android studio,但总是落在其他人身上 这是我的密码:Android 检查firebase中是否存在数据,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,你好 我想验证一个用户是否根据其学生id投票。我尝试将数据检索到android studio,但总是落在其他人身上 这是我的密码: @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.voter_home: Fragment_Voter_Ho
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.voter_home:
Fragment_Voter_Home fragment = Fragment_Voter_Home.newInstance(Pstud_no);
getSupportFragmentManager().beginTransaction().replace(R.id.voter_fragment,
fragment).commit();
break;
case R.id.nav_voter_ssc_president:
userReference = FirebaseDatabase.getInstance().getReference("vote");
Query VerifySSCPresident = userReference.orderByChild("student_id").equalTo(Pstud_no);
VerifySSCPresident.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.child(Pstud_no).exists())
{
Toast.makeText(Voter_Screen.this, "Already Voted", Toast.LENGTH_SHORT).show();
}
else
{
Intent intent = new Intent(Voter_Screen.this, Voter_SSC_President.class);
startActivity(intent);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
break;
case R.id.nav_voter_csc_president:
Intent intent1 = new Intent(Voter_Screen.this, Voter_CSC_President.class);
startActivity(intent1);
break;
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
Pstud_no是当前用户
这是我的Firebase桌子
你有什么建议可以改进我的代码吗?谢谢。因为您已经在查询
Pstud\u no
,所以您不必在onDataChange
中用该键检查子节点。相反,您只需检查查询是否返回了存在的数据快照:
Query VerifySSCPresident = userReference.orderByChild("student_no").equalTo(Pstud_no);
VerifySSCPresident.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
Toast.makeText(Voter_Screen.this, "Already Voted", Toast.LENGTH_SHORT).show();
}
else {
Intent intent = new Intent(Voter_Screen.this, Voter_SSC_President.class);
startActivity(intent);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore errors
}
嘿,伙计,你的代码行得通。我的错。orderByChild(“学生id”)应该是orderByChild(“学生编号”)。好消息:代码中的参数确实需要与JSON中的属性名称匹配。我在答案中修正了它。