firebase.firestore.FieldValue.serverTimestamp () не поддерживает тип данных Timestamp - PullRequest
0 голосов
/ 02 ноября 2019
 async createUser(uid: string, email: string) {
    await this.afs.doc<UserProfileModel>(FirestoreDbConstant.USER_PROFILES + `/${uid}`).set({
      email,
      createdDate: firebase.firestore.FieldValue.serverTimestamp(),
    });
  }

Эта модель работает

export interface UserProfileModel {
    email: string;
    createdDate?: firebase.firestore.FieldValue;
}

Но почему я не могу использовать Timestamp вот так?

import { Timestamp } from '@firebase/firestore-types';

export interface UserProfileModel {
    email: string;
    createdDate?: Timestamp;
}

Тогда выдает эту ошибку:

(свойство) UserProfileModel.createdDate ?: Тип отметки времени В FieldValue отсутствуют следующие свойства из типа отметки времени: секунды, наносекунды, toDate, toMillists (2739) user-profile.model.ts (11, 5): Ожидаемый тип исходит из свойства createDate, которое объявлено здесь для типа UserProfileModel

Проблема в том, что мне нужно использовать toDate() в шаблоне. Но это не работает с createdDate?: firebase.firestore.FieldValue;

<p>{{invitedEvent.startDatetime.toDate() | amDateFormat: 'MMM DD'}}</p>

1 Ответ

1 голос
/ 02 ноября 2019

Как видно из документации JavaScript API для serverTimestamp () :

serverTimestamp (): FieldValue

Возвращает часовой, используемый с set () или update (), чтобы включить сгенерированную сервером метку времени в записанные данные.

Возвращает FieldValue

Не возвращает тип метки времени. Он возвращает FieldValue, значение которого на самом деле является просто заполнителем для специального значения, которое указывает серверу генерировать метку времени. Клиент вообще не генерирует эту метку времени, поскольку мы не можем доверять часам клиентского устройства.

Это означает, что вы не можете использовать ту же модель для чтения и записи записей, которые используют метки времени сервера. По пути это будет FieldValue. На выходе (когда вы запрашиваете документ) это будет метка времени.

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