сортировка не работает с queryOrdered в базе данных реального времени firebase - PullRequest
0 голосов
/ 09 октября 2019
  "users":{
    "steve_rodriquez":{
        "ch1":{
             "timestamp":2
        },
        "ch2":{
            "timestamp":1
        },
        "ch3":{
            "timestamp":4
        },
        "ch4":{
            "timestamp":3
        }
    }   
}

Правила определены как

 "rules": {
    ".read": true,
    ".write": true,
    "users":{
         ".indexOn": ["timestamp"] 
    }
  }

Когда я пытаюсь сортировать по отметке времени, это не работает. я добавил 1,2,3,4 только для примера

Это мой клиентский код для него

ref = Database.database().reference()
        (ref.child("users").child("steve_rodriquez")).queryOrdered(byChild: "timestamp").observeSingleEvent(of: .value, with: {(snapshot) in
            print(snapshot.value as Any)
        })

1 Ответ

1 голос
/ 09 октября 2019

Когда вы извлекаете данные из Firebase, снимок содержит ключи, значения, и порядок всех дочерних узлов. Но когда вы вызываете snapshot.value, он должен преобразовать это в Dictionary, в котором есть место только для ключей и значений. Таким образом, в этот момент информация о порядке дочерних узлов теряется.

Чтобы поддерживать порядок дочерних узлов, выполните итерацию по snapshot.children, как показано в документации по прослушиванию дочерних событий. , и, например, такой ответ: Перебирать дочерние снимки в Firebase

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