Котлин множественный поиск Firebase - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь превратить этот код в многократный поиск, т.е. не просто в Город пользователей, но включить штат и страну.

У меня есть 3 окна ввода поиска в xml, геттеры и сеттерыготов, но я не видел ни одного кода для выполнения желаемого: он найдет пользователя только по городам.

private fun firebaseUserSearch(searchText: String) {

    Toast.makeText(this@MainActivity, "Started Search", Toast.LENGTH_LONG).show()

    val firebaseSearchQuery = mUserDatabase!!.orderByChild("name").startAt(searchText).endAt(searchText + "\uf8ff")


    val options = FirebaseRecyclerOptions.Builder<Users>()
            .setQuery(
                    firebaseSearchQuery, Users::class.java!!)
            .build()

Таким образом, с помощью этого кода я могу искать только один дочерний город и получить пользователя, который живет в этом городе.Я хотел бы найти город, штат, страну.Заранее благодарю за помощь.

Вот изображение интерфейса, который объяснит, что я пытаюсь сделать

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

К сожалению, вы не можете отфильтровать результаты на основе трех свойств с базой данных Firebase в реальном времени, не внося некоторые изменения в структуру вашей базы данных. База данных реального времени не имеет возможности выполнять фильтрацию по нескольким свойствам (используя «несколько предложений WHERE», как многие могут сказать в терминах SQL). Однако есть обходной путь, который может помочь вам отфильтровать результаты по двум или более свойствам, используя составное свойство, как объяснено в моем ответе из следующего поста:

Итак, в вашем случае комбинация искомых свойств представляет собой строковое значение, в состав которого входят city/town, state/pro и country.

В любом случае, в Cloud Firestore разрешено объединение в цепочку нескольких вызовов where(). Так что если в какой-то момент вы попытаетесь использовать Cloud Firestore , помимо этой функции, вы также найдете много других.

0 голосов
/ 16 мая 2019

Вы не можете добавить более одного заказа по дочернему элементу в одном запросе, вы можете отсортировать его после получения данных, если в противном случае условия

В Firebase

не разрешен множественный порядок.

Попробуйте это

userDatabase.orderByChild("townCity").startAt(searchText).addValueEventListener( new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
 log.i("data", dataSnapshot.toString());
}

@Override
public void onCancelled(DatabaseError databaseError){

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