Запрос Firebase по значению во вложенных узлах - PullRequest
0 голосов
/ 27 августа 2018

Это мой документ:

enter image description here

Допустим, у меня есть доступ к следующим ключам и значениям: 29 August 2018, 14:00 - 15:00 и vyMDLD3V6paRWiA7Xlp12zanT7h1. Как я могу объединить их в запросе, чтобы получить родительский ключ -LKVpa_1QviUn1RFlEPr?

Я пробовал несколько версий:

  1. queryByValue, где значение равно id.
  2. queryByKey, где ключ равен 29 August 2018
  3. queryByChild, где child равен 29 August 2018

Я получил ноль результатов или весь документ.

Конечная цель - удалить эти узлы , поэтому, если вы знаете какой-либо другой способ сделать это (кроме поиска в базе данных родительских идентификаторов, а затем удаления), я был бы признателен!

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете сделать:

ref.queryOrdered(byChild: "29 August 2018/14:00 - 15:00")
   .queryEqual(toValue: "vyMDLD3V6paRWiA7Xlp12zanT7h1")

С ref, указывающим на bookedCourtsDaily. Это будет работать, но для эффективного выполнения требуется, чтобы вы определяли индекс для каждого временного интервала. Так что в ваших правилах вам понадобится что-то вроде:

{  
  "bookedCourtsDaily": {
    "$date": { 
      ".indexOn": ["13:00 - 14:00", "14:00 - 15:00", "15:00 - 16:00"] // etc
    }
  }
}

Если это не работает для вас, я бы порекомендовал более распространенный подход создания обратного поиска в вашем JSON:

{
  "codeToAppointment": {
    "vyMDLD3V6paRWiA7Xlp12zanT7h1": "29 August 2018/14:00 - 15:00",
    "anotherCode": "28 August 2018/11:00 - 12:00"
  }
}

С помощью этой структуры вы можете искать путь к встрече из «кода» (или любого другого значения значения в JSON).

Подобное дублирование данных довольно распространено в базах данных NoSQL, таких как Firebase.

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