Как отправить ion-datetime в firebase в качестве временной метки? - PullRequest
0 голосов
/ 28 февраля 2019

Я использую ionic 4 и firebase для проекта, и все идет отлично, за исключением дат.Я начал видеть в консоли предупреждения о том, что Date () будет прерываться в будущем и что Firebase должен использовать метку времени для хранения даты.

Для таких вещей, как созданные в или измененные во время, я могу использовать:

createdAt: firebase.firestore.FieldValue.serverTimestamp()

и он успешно сохранит текущую дату / время в качестве временной метки в базе данных.

Однако попытка передать определенную дату / время в качестве временной метки, похоже, не работает.У меня есть реактивная форма, и в ней есть ионный сборщик дат.HTML-код -

<ion-item>
<ion-label>Date/Time:</ion-label>
    <ion-datetime formControlName="date" displayFormat="YYYY MMM DD @ HH:mm"></ion-datetime>
</ion-item>

, и тогда машинопись имеет реактивную форму, созданную со всеми именами элементов управления и валидаторами.Когда форма отправляется, я вызываю асинхронную функцию, которая отправляет все в firebase.

  async create() {
const id = this.game ? this.game.id : '';
const data = {
  createdAt: firebase.firestore.FieldValue.serverTimestamp(),
  ...this.game,
  ...this.gameForm.value,
};
this.db.updateAt(`games/${id}`, data);
this.modal.dismiss();

}

Однако дата в ионном датчике отправляется в виде карты вместо временной метки.Он имеет год / месяц / час / и т. Д.объекты вместо одной отметки времени.

enter image description here

В ионных документах указатель даты отображается в формате ISO.Кто-нибудь знает, почему это происходит или как я могу преобразовать его в метку времени?

1 Ответ

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

Я понял это.Использование JS Date () firestore должно автоматически преобразовываться в метку времени при сохранении.Я только что взял значение из формы и изменил его на дату ПОСЛЕ синтаксиса спреда.

async create() {
const id = this.game ? this.game.id : '';
const data = {
  createdAt: firebase.firestore.FieldValue.serverTimestamp(),
  ...this.game,
  ...this.gameForm.value,
  date: new Date(this.gameForm.value.date)

};
this.db.updateAt(`games/${id}`, data);
this.modal.dismiss();

}

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