Android Can';无法从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

我正在尝试用电话号码注册用户,我的目标是用户只能注册一个电话号码,这意味着没有重复,所以在注册时,我在firestore中读取,如果输入的号码在数据库中可用,则显示错误,否则它将注册。但在读取数据时,firestore不会返回任何内容。它也没有显示任何错误。同样的功能在其他应用程序中运行良好

这是代码

 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”时,它工作了。不知道这到底是什么