Firebase: код / ​​формула для преобразования метки времени базы данных в реальном времени в метку времени firestore? - PullRequest
1 голос
/ 12 апреля 2020

Я запускаю веб-приложение на Firebase, и я начал работу с базой данных в реальном времени, и теперь я переношу свои данные в firestore.

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

Проблема заключается в том, что база данных и хранилище данных в реальном времени, по-видимому, используют разные методы для регистрации отметки времени:

firebase.database.ServerValue.TIMESTAMP // This will be in the following format: 1577778747131 
firebase.firestore.Timestamp.now() // This will be in the following format: December 31, 2019 at 4:52:00 PM UTC + 9

Другая проблема заключается в том, что firebase.firestore.Timestamp.now (), по-видимому, не хранится в миллисекунды или наносекунды, но в фактической дате и времени в системе. Таким образом, я не знаю, какое значение, если оно есть, указывать при записи в firestore вместо firebase.firestore.Timestamp.now ().

Каким будет код в Javascript для преобразования значений метки времени из базы данных реального времени в метку времени firebase? Как правило, какой код будет заполнять поле ниже:

postinfo.forEach(pi=>{
   const a = pi.time; //Timestamp stored  in realtime database format.
   /*
   Code to transform the timestamp in realtime database to the format to be uploaded to firestore. This I don't know yet.
   */
   const b = new_time;
   // Some code to log the new time instead of the old time. This I can take care of.

Я могу потратить время на то, чтобы использовать один из доступных в сети преобразователей, и вручную зарегистрировать время в новом формате, но это займет несколько часов. и это не то, что программист хотел бы сделать. Любой совет, как это сделать?

1 Ответ

3 голосов
/ 12 апреля 2020

Метка времени сервера, которую вы указали бы в Базе данных реального времени как ServerValue. TIMESTAMP известен в Firestore как FieldValue.serverTimestamp () .

Метки времени в Firestore не сохраняются как unix время в миллисекундах, как база данных в реальном времени. Они сохраняются с использованием двух чисел, смещения в секундах и наносекундах, как описано в документации API для отметка времени . Используйте этот объект Timestamp при чтении полей типа метки времени из Firestore.

Подробнее о том, как работают метки времени сервера Firestore в , в этой статье .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...