[英]Firebase Query returning null value but the value exists
我正在創建電話節點,並在注冊時將用戶的號碼存儲在該節點中,以便應用程序要求他進行注冊,並且如果他在注冊之前嘗試登錄,則不會發送驗證碼。
我嘗試使用Firebase查詢將用戶輸入的電話號碼與電話節點進行比較,以檢查該電話號碼是否存在。
if (v == btn_login) {
Toast.makeText(LoginActivity.this, "In Login Button", Toast.LENGTH_LONG).show();
String number = et_Phone.getText().toString().trim();
if (number.isEmpty() || number.length() < 10) {
et_Phone.setError("Valid number is required");
et_Phone.requestFocus();
return;
}
final String ph = "+92" + number.substring(1);
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("phone");
Query query = ref.orderByChild("phonenumber").equalTo(ph);
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
Toast.makeText(LoginActivity.this, ph.toString(), Toast.LENGTH_LONG).show();
sendVerificationCode(ph);
L1.setVisibility(View.GONE);
L2.setVisibility(View.VISIBLE);
} else {
et_Phone.setError("Please enter the number again");
et_Phone.setText("");
et_Phone.requestFocus();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
Firebase查詢每次都返回null
您的phone
節點只有一個屬性phonenumber
。 要查找具有您輸入的值的屬性,請使用:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("phone");
Query query = ref.orderByValue().equalTo("+923234022022");
要使用orderByChild("phonenumber")
,您要查詢的位置需要有多個子節點,每個子節點又具有一個phonenumber
屬性。 所以像這樣:
users: {
uidOfUser1: {
name: "Sikandar Niaz",
phonenumber: "5557273456"
},
uidOfUser2: {
name: "Frank van Puffelen",
phonenumber: "5554159410"
}
}
現在,在上面的結構中,您可以使用orderByChild()
查找具有特定電話號碼的子節點:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("users");
Query query = ref.orderByChild("phonenumber").equalTo("5557273456");
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
System.out.println(userSnapshot.getKey())
System.out.println(userSnapshot.child("name").getValue(String.class))
}
}
...
這將打印:
uidOfUser1
西坎達·尼亞茲(Sikandar Niaz)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.