Swift Firebase queryOrdered search - PullRequest
       10

Swift Firebase queryOrdered search

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

Я хочу искать в firebase, используя queryStarting

У меня есть baseStruct:

products
   Jakets
      red
         name: red
         categoryName: Jakets
   Pants
      blue
         name: blue
         categoryName: Pants
   ...

Я пытался

let strSearch = "re"
        Database.database().reference().child("products").queryOrdered(byChild:  "name")
            .queryStarting(atValue: strSearch)
            .queryEnding(atValue: strSearch + "\u{f8ff}")
            .observeSingleEvent(of: .value, with: { (snapshot) in

            print("snapshot= \(snapshot)")

        })

В Firebase я добавил правила:

    {
  "rules": {
    ".read": true,
    ".write": true,
    "products": {
      "$someID": {
        ".indexOn": ["name"]
      }
    }
  }
}

Но это дает мне

снимок = Snap (продукты) null

Как я могу изменить свой код для поиска по имени?

1 Ответ

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

Функция запросов к базе данных Firebase Realtime в списке узлов.Вы выполняете запрос в определенном месте, и он возвращает прямые дочерние узлы этого местоположения, которые имеют определенное значение по известному пути.

Например, вы можете вернуть все куртки, которые имеютимя, начинающееся с re, выполнив:

Database.database().reference().child("products/Jakets").queryOrdered(byChild:  "name")
    .queryStarting(atValue: "re")
    .queryEnding(atValue: "re\u{f8ff}")
    .observeSingleEvent(of: .value, with: { (snapshot) in
        ...
    })

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

  • Либо выполнить отдельные запросы для каждого типа продукта.
  • Или добавить дополнительную структуру данных, в которой все названия продуктов хранятся в виде плоского списка.

Подробнее об этом см .:

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