Получение узлов из базы данных Firebase со сложным запросом в Android Studio - PullRequest
0 голосов
/ 30 октября 2018

У меня есть база данных Firebase Realtime, с этим примером структуры Basic node structure

Мне нужно создать фильтры, чтобы я мог захватить все узлы, которые стоят от 100 до 400 долларов, не дальше 60 миль от моего текущего местоположения, и чья startDate не сегодня. Или любой вид комбинации этих фильтров (стоимость от, стоимость до, расстояние, дата начала, дата начала до).

Есть ли эффективный способ хранения этих данных, чтобы вся фильтрация могла происходить на стороне сервера?

Я знаю, что могу сделать .orderByChild( "cost" ).startAt(100).endAt(400), а затем перебрать datasnapshot на стороне клиента, но я не думаю, что это элегантно или эффективно, когда база данных растет.

Представьте, что вы собрали миллионы узлов, чтобы показать 3 или 4, которые удовлетворяют всем фильтрам.

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

Кто-нибудь с большим опытом работы с этими базами данных NO-SQL может мне помочь? Это должна быть база данных реального времени Firebase, а не облачное хранилище пожаров.

1 Ответ

0 голосов
/ 30 октября 2018

Я думаю, что в базе данных реального времени вы не можете сделать это на стороне сервера простым запросом. Я знаю, что с dataSnapshot вы возьмете все данные и выберите, что вы хотите, но, как вы сказали, если миллион узлов ... это становится очень сложно. Я думаю, что вы должны использовать SQL для этого типа приложений. Это мое мнение, я жду другого ответа на этот пост: D

Извините за ответ, но я не могу комментировать; (

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