Firebase: возвращает ли orderByKey упорядоченный снимок - PullRequest
0 голосов
/ 25 сентября 2018

Это звучит как глупый вопрос, но документы говорят:

orderByKey

orderByKey () возвращает firebase.database.Query

Создает новый объект Queryупорядочено по ключу.

Объект запроса упорядочен по ключу, что означает, что я могу сделать:

ref.orderByKey().limitToLast(1)

Чтобы получить последний в порядке.

Но еслиЯ делаю:

ref.limitToLast(1).on('child_added', function(s)
{
    ref.orderByKey().limitToLast(2).once('value').then(function(snapshot)
    {
        var val = snapshot[Object.keys(snapshot)[0]];
    });
});

Будет ли val всегда вторым последним?В документах конкретно не говорится, что снимок упорядочен.Должен ли я просто продолжить сортировку самостоятельно, чтобы быть уверенным?

Есть ли лучший способ получить второй последний по порядку или последний, если есть только один каждый раз, когда добавляется ребенок?В основном, я хочу, чтобы тот, что был добавлен.

Спасибо!

1 Ответ

0 голосов
/ 26 сентября 2018

У вас есть этот запрос:

ref.orderByKey().limitToLast(2)

Этот запрос упорядочивает дочерние узлы по ключу, а затем возвращает последние два элемента.

Чтобы получить доступ к результатам по порядку, используйте Snapshot.forEach():

ref.orderByKey().limitToLast(2).once('value').then(function(snapshot)
{
  snapshot.forEach(function(child) {
    console.log(child.val());
  });
});

Первый раз в цикле даст вам второй по последнему пункту, так что если вы хотите захватить это:

ref.orderByKey().limitToLast(2).once('value').then(function(snapshot)
{
  var isFirst = true;
  snapshot.forEach(function(child) {
    if (isFirst) {
      console.log(child.val());
      isFirst = false;
    }
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...