Firebase: Опрос по ключу? - PullRequest
       2

Firebase: Опрос по ключу?

0 голосов
/ 21 января 2020

Я посмотрел вокруг - я не вижу подобных вопросов, поэтому я спрошу? Как успешно выполнить запрос по значению ключа?

У меня есть база данных, составленная следующим образом:

{
 Data {
  ABC_1 {
  ...
  }
  ABC_2 {
  ...
  }
  ABC-D_3 {
  ...
  }
  BCA_4 {
  ...
  }
 }
}

Теперь пользователь вводит некоторые данные - предположим, AB C, и я хочу Мой запрос на возврат всего, что начинается с ABC _.

Итак, я сделал заказ по ключу, а затем сделал запрос следующим образом:

var data = database.ref('Data').orderByKey().startAt(brandholder);
data.on('value', this.gotdata.bind(this), this.errorData);

Но его возвращают мне каждый ребенок. Что я здесь не так делаю?

О, если вам интересно, откуда у меня такая структура данных? У меня есть большой набор данных, и он преобразован в формат JSON, который вы видите выше. Он очень большой для загрузки в браузер (много более 20 МБ), поэтому я бы предпочел запрашивать необходимые результаты, а не загружать его каждый раз.

Возможно, есть лучший способ сделать это? Я пользуюсь Angular.

1 Ответ

0 голосов
/ 21 января 2020

Оператор запроса Firebase называется startAt, а не startWith. Таким образом, в вашем текущем запросе Firebase упорядочивает все дочерние узлы по их ключу, затем находит первый, ключ которого начинается с ABC_, а затем возвращает все дочерние узлы.

Чтобы построить запрос, который получает все дочерние узлы чьи ключи начинаются с с определенной подстрокой, вам нужно использовать комбинацию startAt и endAt:

var data = database.ref('Data').orderByKey().startAt("ABC_").endAt("ABC_\uf8ff");

endAt("ABC_\uf8ff") в этом запросе гарантирует, что Firebase прекращает возвращать дочерние узлы, как только достигает конца тех, которые начинаются с ABC_ (так как \uf8ff - последний символ Unicode).

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