Супер простой запрос в FireBase не так (Swift) - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь выполнить простой упорядоченный запрос на основе временных отметок эпохи:

guard let user = Auth.auth().currentUser?.uid else {return}
let queryRef = Database.database().reference().child("ordersBackup").child(user).queryOrdered(byChild: "pickupCompleteAfter").queryLimited(toFirst: 1)
queryRef.observeSingleEvent(of: .childAdded, with: { (snapshot) in
    print(snapshot.value)
})

Структура:

{
  "UserId" : {
    "UniqueId1" : {
      "pickupCompleteAfter" : 1568314979000,
      "name" : "Jeff"
    },
    "UniqueId2" : {
      "pickupCompleteAfter" : 1557687779000,
      "name" : "Stig"
    },
    "UniqueId3" : {
      "pickupCompleteAfter" : "1578855779000",
      "name" : "Ali"
    }
  }
}

Он должен вернуть UniqueId2.Тем не менее, я всегда получаю тот же порядок, что и структура, то есть UniqueId1, UniqueId2, UniqueId3.Он вообще не учитывает временную метку.Что я делаю не так?

Вывод:

LQ8nHi
{
    orderInfo =     {
        deliveryCompleteAfter = 1552917600000;
        deliveryCompleteBefore = 1552924800000;
        pickupCompleteAfter = 156249280000;
        pickupCompleteBefore = 1552492800000;
    };
}
YQxeKv
{
    orderInfo =     {
        deliveryCompleteAfter = 1552917600000;
        deliveryCompleteBefore = 1552924800000;
        pickupCompleteAfter = 1557687779000;
        pickupCompleteBefore = 1552492800000;
    };
}
ibIPO9
{
    orderInfo =     {
        deliveryCompleteAfter = 1553090400000;
        deliveryCompleteBefore = 1553097600000;
        pickupCompleteAfter = 1578855779000;
        pickupCompleteBefore = 1552665600000;
    };
}

enter image description here

1 Ответ

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

pickupCompleteAfter вложено в узел orderInfo каждого дочернего элемента. В настоящее время вы не говорите базе данных об этом полном пути, поэтому она проверяет только pickupCompleteAfter прямо под каждым дочерним элементом.

Для заказа / фильтрации по orderInfo/pickupCompleteAfter используйте:

let query = Database.database().reference().child("ordersBackup").child(user)
  .queryOrdered(byChild: "orderInfo/pickupCompleteAfter").queryLimited(toFirst: 1)
query.observeSingleEvent(of: .childAdded, with: { (snapshot) in
    print(snapshot.value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...