Облачная функция Firestore все еще предупреждает меня о дате и метке времени после добавления «исправления» - PullRequest
0 голосов
/ 12 апреля 2019

Я пишу облачные функции, используя Typescript, но я думаю, что это должно быть та же проблема с Javascript.

Я получил то же предупреждение, что и все, кто сказал:

Поведение для объектов Date, хранящихся в Firestore, изменится И ваше приложение может сломаться. Чтобы скрыть это предупреждение и убедиться, что ваше приложение делает чтобы не прерываться, вам нужно добавить следующий код в ваше приложение, прежде чем вызов любых других методов Cloud Firestore:

const firestore = new Firestore (); настройки const = {/ * ваш настройки ... * / timestampsInSnapshots: true};
firestore.settings (настройки);

С этим изменением будут читаться метки времени, хранящиеся в Cloud Firestore. обратно как объекты временной метки Firebase, а не как системные объекты даты. Поэтому вам также нужно обновить код, ожидающий дату вместо ожидать метку времени. Например:

// Старый: const date = snapshot.get ('made_at'); // Новое: const timestamp = snapshot.get ('made_at'); постоянная дата = timestamp.toDate ();

Пожалуйста, проверяйте все существующие использования даты, когда вы включаете новый поведение. В будущем выпуске поведение изменится на новый поведение, поэтому, если вы не выполните эти шаги, ваше приложение может сломаться.

Так что я нашел ответы на stackoverflow, но ни один из них на самом деле не работал. Я в основном добавил в свой код следующее в верхней части моего index.ts (после импорта):

admin.initializeApp()
export const firestore = admin.firestore()
firestore.settings({timestampsInSnapshots: true})

Затем я развертываю свои функции на базе Firebase Все хорошо!

Проблема появляется при вызове триггера. например, когда создается уведомление:

export const onNotificationCreate = functions.firestore.document('notifications/{notificationsID}').onCreate(async notification => { }

Интерфейс, который я использую для создания объекта уведомления:

export interface Notification {
    created: any,
    type: NotificationType,
    content: {
        post?: DocumentReference,
        comment?: DocumentReference
    }
    emitters: DocumentReference[],
    owner: DocumentReference
}

и для создания этого объекта я получаю дату из хранилища данных.

export const onPostCommentCreate = functions.firestore.document('blogpost/{blogpostID}/comments/{commentID}').onCreate(async (comment, context) => {
    const commentData = comment.data()
    const commentDate = commentData['created']

Есть идеи, почему у меня все еще есть предупреждение в журналах облачных функций Firestore?

Спасибо.

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