Как установить .indexOn в firebase? - PullRequest
0 голосов
/ 07 июня 2019

Это моя структура JSON

{
      "books" : {
        "sample" : {
          "eight" : {
            "author" : "eighta",
            "name" : "eight",
            "sub" : {
              "subauthor" : "eightauthor",
              "subname" : "general"
            }
          },
          "eleven" : {
            "author" : "twelvea",
            "name" : "twelve",
            "sub" : {
              "subauthor" : "elevenauthor",
              "subname" : "general"
            }
          },
          "five" : {
            "author" : "fivea",
            "name" : "five",
            "sub" : {
              "subauthor" : "fiveauthor",
              "subname" : "fivesub"
            }
          },
          "four" : {
            "author" : "foura",
            "name" : "four",
            "sub" : {
              "subauthor" : "fourauthor",
              "subname" : "general"
            }
          },
          "nine" : {
            "author" : "ninea",
            "name" : "nine",
            "sub" : {
              "subauthor" : "nineauthor",
              "subname" : "ninesub"
            }
          },
          "one" : {
            "author" : "onea",
            "name" : "one",
            "sub" : {
              "subauthor" : "oneauthor",
              "subname" : "onesub"
            }
          },
          "seven" : {
            "author" : "seven",
            "name" : "seven"
          },
          "six" : {
            "author" : "sixa",
            "name" : "six"
          },
          "ten" : {
            "author" : "tena",
            "name" : "ten"
          },
          "three" : {
            "author" : "threea",
            "name" : "three"
          },
          "two" : {
            "author" : "twoa",
            "name" : "two"
          }
        }
      }
    }

Я хочу получить данные, которые имеют поднаименование, равное общему

Мои правила индекса

{
  /* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */
  "rules": {
    ".read": true,
    ".write": true,
      "books": {
        "$user_id": {
          ".indexOn": ["subname", "subauthor"]
        }
        }
      }
  }
}

https://myprojectpath/books/sample/eight.json?orderBy="subname"&equalTo="general"&print=pretty

Вышеуказанное правило работает нормально. Но мне нужно передать универсальный API для извлечения данных, где имя должно быть общим. Я не могу пропустить восемь.json, nine.json, ten.json каждый раз, когда я звоню. Я должен назвать только один API, где он должен предоставить данные, где имя должно быть общим.

1 Ответ

1 голос
/ 07 июня 2019

Если я вас правильно понимаю, вы хотите использовать один запрос для поиска по всем авторам их sub/subname свойства.

В этом случае вы можете определить индекс на books/sample для свойства sub/subname каждого дочернего узла:

"books": {
    "sample": {
        ".indexOn": ["sub/subname", "sub/subauthor"]
    }
}

Здесь sample может быть переменной $ (например, $user_id), но пути в .indexOn должны быть известны.

Это создает индекс под sample со значением sub/subname для каждого дочернего узла, который можно затем запросить с помощью:

https://myprojectpath/books/sample.json?orderBy="sub/subname"&equalTo="general"&print=pretty
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...