Я слушаю новые документы базы данных Firebase Realtime с кодом, похожим на этот:
firebase.database().ref(path)
.orderByChild('timestamp')
.on('child_added', snap => {
...
});
, где на сервере установлена метка времени с firebase.database.ServerValue.TIMESTAMP . Я хотел бы, чтобы документы всегда обрабатывались в порядке отметок времени, но я знаю, что документы, которые я добавляю локально, могут поступать в указанном выше коде не по порядку.
Я могу проверять и исправлять неупорядоченные прибытия, но я ' Я бы предпочел не делать этого, если есть какой-то способ, чтобы этого не произошло. Я знаю о этом ответе (и ответах, которые ссылаются на него), но я считаю, что это применимо к более раннему API без методов упорядочения, таких как orderByChild
.
Я считаю, чтобы я мог получать порядок меток времени, если я всегда добавляю документы с использованием транзакции и передаю false
в аргументе applyLocally
. Мне интересно, работает ли он также для добавления документов из отдельного Javascript контекста на одном клиенте (например, из Web Worker ) без транзакции.
Будет ли один или оба из них подходы гарантируют временную метку заказа? Есть ли другой способ добиться этого? Среди подходов, которые работают, один явно превосходит или есть компромиссы между ними?