Результаты фильтруются в нескольких запросах на базе Firebase. - PullRequest
0 голосов
/ 30 апреля 2018

Привет, ребята. У меня проблема с несколькими запросами в списке Firebase. Этот запрос фильтрует запросы по этим запросам Но это приносит мне три результата, и верно, что есть только два результата

            this.all_being_executed = this.fdb.list('main_requests', ref => {
              let query = ref.orderByChild('requests_receiving_status').equalTo(false);
                  query = ref.orderByChild('requests_status').equalTo(true);
              return query;
        }).valueChanges();
        return this.all_being_executed;

enter image description here

Есть ли помощь, чтобы правильно отфильтровать результаты

1 Ответ

0 голосов
/ 30 апреля 2018

Вы можете использовать только одно предложение orderByChild() в своем запросе, поэтому кажется, что ваше второе предложение перезаписывает первое, и вы просто получаете предложения с request_status===true.

Из документации :

Запросы можно заказывать только по одному ключу за раз. Вызов orderByChild () несколько раз по одному и тому же запросу выдает ошибку

Мое предложение состоит в том, чтобы либо реорганизовать текущую структуру данных, чтобы сделать возможным более простой запрос, либо использовать новое третье поле, объединяющее как requests_receiveing_status, так и request_status, они выполняют ваш запрос в этом объединенном поле. Примерно так:

{
  "requests_receiving_status_and_status": "false_true";
}

и запросить его следующим образом:

let query = ref.orderByChild('requests_receiving_status_and_status').equalTo('false_true');

Теперь я знаю, что это кажется хакерским и неэффективным, но на самом деле это правильный подход для Firebase.

Но, если вы предпочитаете более чистое решение, попробуйте разделить ваши объекты в двух отдельных списках, один для request_receiving_status true, а другой для ложных, они ищут только в ложных, используя query = ref.orderByChild('requests_status').equalTo(true);. Это добавляет избыточность, но это еще один правильный подход к базам данных NoSql.

Кроме того, посмотрите это видео и посмотрите, поможет ли оно вам решить эту проблему.

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