Преобразование даты в метку времени для хранения в firebase firestore в javascript - PullRequest
0 голосов
/ 26 ноября 2018

В настоящее время я использую Math.floor(Date.now() / 1000), чтобы получить правильный формат отметки времени для добавления в документ в Firebase, однако отметка времени вставляется как число, а не как отметка времени.

number

Я бы хотел, чтобы он был вставлен, как показано ниже (в качестве отметки времени, а не числа).

enter image description here

Возможно ли это?

Ответы [ 5 ]

0 голосов
/ 11 февраля 2019

Вы можете просто использовать следующую строку:

var myFirebaseFirestoreTimestampFromDate = firebase.firestore.Timestamp.fromDate(new Date());

.fromDate - это статический метод из статического класса меток времени из Firebase .

Ссылка: Метка времени Firebase Doc

0 голосов
/ 27 ноября 2018

Если вы хотите сохранить поле как метку времени в Firestore, вам нужно будет отправить объект JavaScript Date или объект Firestore Timestamp в качестве значения поля.

Если вы хотите использовать дату, просто скажите new Date(x), где x - это значение в миллисекундах, которое вы пытались добавить ранее.

Если вы хотите использовать метку времени, вы бынужно сделать больше работы, чтобы преобразовать x в комбинацию секунд и наносекунд, чтобы передать конструктору, как предполагает документация.

0 голосов
/ 26 ноября 2018

Как я вижу, вы добавляете дату, вам лучше использовать метку времени сервера и использовать приведенное ниже правило безопасности для ее применения.

Правила безопасности

allow create: if request.resource.data.date_added == request.time && 
              // other rules for the message body

Код JS на стороне клиента

const message = {
    date_added: firebase.firestore.FieldValue.serverTimestamp();
}
0 голосов
/ 26 ноября 2018

Используйте

 let lang = 'en-US' // you may use user's computer language: navigator.language || navigator.userLanguage
 let d = new Date(date);
 let options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour:"numeric", timeZone:'short' };
 firebase.database().ref('/thePathYouLikeToSave/date_added').set(d.toLocaleDateString(lang, options));

для дополнительных опций даты здесь полная информация

0 голосов
/ 26 ноября 2018

Чтобы сохранить дату / время в Firestore, вам нужно отправить объект Date.

Например, для существующей даты установите в поле: new Date("December 10, 1815")

Дополнительная информация доступна в документах .

...