我的应用程序允许您在添加播放器到节点后添加我使用以下方法通过phoneNum进行搜索以查看该播放器是否存在于“用户”节点中。Firebase DataSnapshot空值
我遇到问题的地方是我需要能够在找到的匹配节点中从用户的datasnapshot访问值。例如返回用户ID的值。当我尝试它时,它一直显示为一个空值,当我尝试登录到控制台时,它抱怨说它是一个空值,因为if语句应该处理这个事情,所以它没有意义。
该方法能够找到玩家是否存在于用户节点中,并显示Toast消息来表明这一点。
代码:
public void checkPlayerNum(final String phoneNum) {
DatabaseReference mDatabaseReference =
FirebaseDatabase.getInstance().getReference().child("users");
if (!TextUtils.isEmpty(phoneNum)) {
final Query phoneNumReference = mDatabaseReference.orderByChild("phoneNum").equalTo(phoneNum);
ValueEventListener phoneNumValueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getValue() != null) {
// String key = String.valueOf(dataSnapshot.getValue());
User mUser = dataSnapshot.getValue(User.class);
String uId = mUser.getUid();
// Log.d("TAG",uId);
Toast.makeText(getApplicationContext(), "* found **"+ uId , Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "****NOT FOUND****", Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
phoneNumReference.addListenerForSingleValueEvent(phoneNumValueEventListener);
} else {
Log.e("Error","phoneNum is null");
}
}
由于RISHABH,这种执行方式与上述相同的代码来实现它。它指示吐司消息说它找到了匹配,但是当我尝试获得它输出的值为空 –