Я пытаюсь сохранить временную метку firebase в виде строки, я использую базу данных в реальном времени, я хочу расположить свои узлы по дате их публикации и хочу исключить те сообщения, которые старше 24 часов.
моя структура узлов выглядит примерно так
"posts" : {
"b" : {
"text" : "5",
"timestamp" : "{.sv=timestamp}",
"uid" : "KpZvp0bhOlPJI3KKwe1AF7Apb2U2"
},
"a" : {
"text" : "hey",
"timestamp" : "1559912589250",
"uid" : "KpZvp0bhOlPJI3KKwe1AF7Apb2U2"
}
}
У меня нет проблем с размещением постов по дате, но когда я хочу исключить посты старше 24 часов, именно тогда у меня возникают проблемы
firebaseDatabase.reference.child("posts").orderByChild("timestamp").startAt((System.currentTimeMillis() - 86400000))
"startAt ()" не требует длинных или целых чисел, он принимает только логические, строковые и двойные в качестве параметров.
так я создаю узлы
firebaseDatabase.reference.child("posts").push().setValue(mapOf(
"by" to uid,
"text" to "hey",
"timestamp" to ServerValue.TIMESTAMP)
)
Я попытался изменить ServerValue.TIMESTAMP на строку, но он сохранил его как "{" .sv ":" timestamp "}" Я посмотрел вокруг и обнаружил, что если я отправлю карту с индексом с именем ". sv "и имеет значение" timestamp ", чтобы база данных распознала его и заменила значение на метку времени сервера
как то так
firebaseDatabase.reference.child("posts").push().setValue(mapOf(
"by" to uid,
"text" to "hello",
"timestamp" to mapOf(".sv" to "timestamp")
значением метки времени будет метка времени сервера в виде длинного числа, поэтому в основном ServerValue.TIMESTAMP похож на карту, поэтому, когда я попытался изменить его на строку, он дал мне "{" .sv ":" timestamp " } "значение.
Так как я могу сохранить метку времени сервера в виде строки? или как я могу запросить данные в виде длинного числа, не меняя его на строку