Como definir época no Firestore usando a hora do servidor
Estou tentando definir a época em que os dados são criados no Firestore. Estou procurando obter um resultado semelhante ao que é feito no banco de dados em tempo real, usandoServerValue.TIMESTAMP
.
Não quero defini-lo usando o horário do dispositivoSystem.getCurrentMillis
porque esse horário pode ser alterado pelo usuário.
De acordo comdocs uma atualização precisa ser feita, o problema é o formato. Este é o meu código:
Map<String, Object> map = new HashMap<>();
map.put("timestamp", FieldValue.serverTimestamp());
reference.update(map);
E este é o resultado no console da Web Firebase:
Fiquei muito surpreso com o espanhol, o que poderia ser útil em algumas situações, mas época é o que estou perseguindo. Tente ver o lado positivo e atenha-se a ele e pensei que estava vendo a web em espanhol, então mudei o idioma no seletor de rodapé, mas não mudou. Neste ponto, suponho que esteja definido na linguagem do projeto.
De volta à tentativa da época. Considerando que meu projeto também está usando o banco de dados em tempo real, tento configurá-lo dessa maneira:
Map<String, Object> map = new HashMap<>();
map.put("timestamp", ServerValue.TIMESTAMP);
reference.update(map);
Ele fez upload de algo, mas era apenas um disparate.
Eu acho que usar época como o registro de data e hora do lado do servidor é uma abordagem padrão melhor, depois que todo cliente pode transformá-lo para a conveniência e localidade do usuário.
A época pode definir como valor do servidor no Firestore?
ATUALIZAR
A resposta marcada como correta me levou a algumas descobertas interessantes que eu gostaria de compartilhar, para que outras pessoas na mesma situação possam se beneficiar de:
Não há necessidade de definir a época por causa daFieldValue.serverTimestamp()
é um objeto de data tratado pelo banco de dados, o que vemos no console é apenas uma maneira amigável de mostrá-lo.Desde aFieldValue.serverTimestamp()
é um objeto de data, ele pode ser classificado como qualquer outro carimbo de data / hora, se você adicionarorderBy("timestamp", Query.Direction.DESCENDING)
à sua consulta (ouQuery.Direction.ASCENDING
) ordenará os resultados corretamente.E com relação a um comentário @ 34m0, isso é certo, os clientes não devem cuidar da lógica para definir o tempo de criação, mas isso deve ser feito em Funções.