Не могу прочитать данные из Firestore - PullRequest
0 голосов
/ 21 марта 2020

Вот база данных Firestore

Я пытаюсь зарегистрировать пользователя по номеру телефона. Моя цель - пользователь может зарегистрироваться только по одному номеру телефона, поэтому повторений нет, ТАК Регистрируясь, я читаю в пожарном депо, что если введенный номер доступен в базе данных, он показывает ошибку, иначе он зарегистрируется. Но при чтении данных пожарный магазин ничего не возвращает. Также это не показывает ошибку toast. Эта же функция работает нормально в другом приложении.

Вот код

 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;
}

Ответы [ 3 ]

0 голосов
/ 21 марта 2020

При запросе .whereEqualTo("Number", number.text.toString()) не следует ли также добавить +92 к номеру, например .whereEqualTo("Number", "+"+92+number.text.toString())?

0 голосов
/ 21 марта 2020

Согласно вашему комментарию:

Значением числа является «Число», сохраненное в базе данных i, e 03162026593

Поэтому, когда вы используете следующий вызов :

.whereEqualTo("Number", number.text.toString())

Вы фактически передаете 03162026593, а не +9203162026593, как в вашей базе данных. Чтобы решить эту проблему, вы должны использовать следующий запрос:

mFireStore.collection("USERS")
    .whereEqualTo("Number", "+92" + number)
    .get()
    .addOnSuccessListener(/* ... */);
0 голосов
/ 21 марта 2020

Если вы хотите запросить базу данных Firestore, вам нужно сначала создать индекс. Go через эту ссылку , и, надеюсь, она будет служить вашей цели!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...