Firebase orderByChild с путем и равным булевому ничего не возвращает - PullRequest
0 голосов
/ 05 марта 2019

Хорошо, моя структура данных в базе данных реального времени выглядит примерно так:

и когда я запускаю запрос, подобный следующему:

database.ref('access_lists').orderByChild('95577307/read').equalTo(true)

, я ничего не получаю от запроса.Насколько я могу судить, это должно сработать, но я не понимаю, почему это не так.

1 Ответ

0 голосов
/ 05 марта 2019

У вас есть ключ внутри другого ключа, поэтому вы не получаете значения, если числа 95577307, ... имеют цель, но не должны быть значением, используйте его в качестве ключа, изменив способ структурирования данных:

access_lists: {
  95577307: {
    name: 'FelixJar1'
    read: true
    write: true
  }
}

Это также поможет вам отсортировать / отфильтровать пользователей с правами чтения / записи равные (true).https://firebase.google.com/docs/database/web/structure-data#flatten_data_structures

===============================================

РЕДАКТИРОВАНИЕ ДЛЯ ОТВЕТА НА ВАШ ОТВЕТ

Вот как это делает Firebase:

"posts": {
  "ts-functions": {
    "metrics": {       <===== it's the same key name
      "views" : 1200000,
      "likes" : 251000,
      "shares": 1200,
    },
    "title" : "Why you should use TypeScript for writing Cloud Functions",
    "author": "Doug",
  },
  "android-arch-3": {
    "metrics": {       <===== it's the same key name
      "views" : 900000,
      "likes" : 117000,
      "shares": 144,
    },
    "title" : "Using Android Architecture Components with Firebase Realtime Database (Part 3)",
    "author": "Doug",
  }
},

Поскольку у них есть имя ключа metrics, они могут индексировать его в правилах Firebaseа также иметь возможность фильтровать / сортировать / сортировать значения, например: metrics/views

С другой стороны, у вас есть 995055869, 950336178....

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