Android Can';无法从Firestore读取数据
我正在尝试用电话号码注册用户,我的目标是用户只能注册一个电话号码,这意味着没有重复,所以在注册时,我在firestore中读取,如果输入的号码在数据库中可用,则显示错误,否则它将注册。但在读取数据时,firestore不会返回任何内容。它也没有显示任何错误。同样的功能在其他应用程序中运行良好 这是代码Android Can';无法从Firestore读取数据,android,firebase,kotlin,google-cloud-firestore,Android,Firebase,Kotlin,Google Cloud Firestore,我正在尝试用电话号码注册用户,我的目标是用户只能注册一个电话号码,这意味着没有重复,所以在注册时,我在firestore中读取,如果输入的号码在数据库中可用,则显示错误,否则它将注册。但在读取数据时,firestore不会返回任何内容。它也没有显示任何错误。同样的功能在其他应用程序中运行良好 这是代码 mFireStore = FirebaseFirestore.getInstance() mFireStore.collection("USERS") .whereEqu
mFireStore = FirebaseFirestore.getInstance()
mFireStore.collection("USERS")
.whereEqualTo("Number", number.text.toString())
.get()
.addOnSuccessListener { documents ->
for (document in documents) {
if( document != null ){
Log.i("Null","Document Not null")
Toast.makeText(this,"Phone Number Already Exist",Toast.LENGTH_SHORT).show()
}else{
val OTP = Intent(this@MainActivity,OTPActivity::class.java)
OTP.putExtra("Name",NAME.text.toString())
OTP.putExtra("Number","+"+92+number.text.toString())
OTP.putExtra("Age",age.text.toString())
OTP.putExtra("District",district.text.toString())
startActivity(OTP)
}
}
}
.addOnFailureListener { exception ->
Toast.makeText(this,exception.toString(),Toast.LENGTH_SHORT).show()
}
以下是我的安全规则
match /{document=**} {
allow read, write: if true;
}
若要查询Firestore数据库,需要首先创建索引。通过,希望它能达到你的目的 当查询
.whereEqualTo(“Number”,Number.text.toString())
时,您是否应该向该数字添加+92,如.whereEqualTo(“Number”,“+”+92+Number.text.toString())
?根据您的评论:
number的值是存储在数据库i,e 03162026593中的“number”
因此,当您使用以下调用时:
.whereEqualTo("Number", number.text.toString())
实际上,您正在传递数据库中的03162026593
和而不是+920316026593
。要解决此问题,应使用以下查询:
mFireStore.collection("USERS")
.whereEqualTo("Number", "+92" + number)
.get()
.addOnSuccessListener(/* ... */);
但是,在这是第一次出现问题之前,我没有创建索引。每次我都试过,效果很好。
number.text.toString()
的值是多少?number的值是存储在数据库i,e 03162026593中的“number”,我昨天试过,但不起作用。同样没有“+92”,我有另一个项目使用相同的代码,它工作得非常好。但是现在当我再次尝试“+92”时,它工作了。不知道这到底是什么