Вы можете попытаться создать уникальные идентификаторы, похожие на то, что делает push, но это похоже на большую работу для небольшого выигрыша, когда в Firebase встроены инструменты для упорядочивания данных. Самый простой ответ - установить приоритет для каждой записи, используя временную метку сервера.
ref.push({ ...data..., ".priority": Firebase.ServerValue.TIMESTAMP });
Чтобы установить его в будущем или в прошлом, укажите метку времени вручную.
ref.push({ ...data..., ".priority": timeInTheFuture });
.info/serverTimeOffset также может быть полезен для обработки латентности.
Чтобы создать толчок иду, вы могли бы сделать что-то похожее на следующее:
- Получить текущую метку время и раздувание до фиксированной длины (то есть 16 символы)
- Append случайной последовательности цифр, такие как случайное число или хэш, а также дополняется до фиксированной длины
- Вашей запись будет выглядеть примерно так:
000128198239:KHFDBWYBEFIWFE
- Теперь у вас есть лексический Сортируемый идентификатор на основе метки времени, которая является уникальной
Вот полезный discussion on sorting numbers lexicographically
Вы смотрели на документы для [упорядоченных данных] (https://www.firebase.com/docs/web/guide/retrieving-data.html#section-ordered- данные) и приоритеты? Что вы пробовали? Что не сработало? – Kato
Я знаю, что я могу установить собственные временные метки (прошлое/будущее) для каждого из данных, а затем установить приоритеты с каждой отметкой времени ([например, это] (https://examples-sql-queries.firebaseio.com/messages)). Но мне было интересно, могу ли я установить ключи для упорядочивания данных, а также сделать уникальный идентификатор, подобный методу push(). Если правильный способ - установить только временные метки, есть ли способ получить временную метку из уникального идентификатора, установленного методом push()? Извините, возможно, я преувеличиваю, чтобы повторно использовать сохраненные данные или не писать повторяющиеся данные. Но все же у меня нет опыта в денормализации данных масштаба. – Miguel