Как установить метку времени хранилища огня из настраиваемого объекта? - PullRequest
0 голосов
/ 09 июля 2020

У меня есть настраиваемый объект с именем myData, и внутри этого объекта у меня есть отметка времени. Учитывая, что драйвер узла для Firebase не поддерживает настраиваемые объекты, я быстро конвертирую данные в чистые JSON, используя следующую строку:

const dataAsJson = JSON.parse(JSON.stringify(myData));

Однако, когда он это делает, он удаляет Date от объекта и превращает его в строку (если он изначально имеет тип Date) или карту, если он имеет тип FirebaseFirestore.Timestamp.

Я полагаю, я мог бы снимать другой прямой набор на тот же объект сразу после const res = await docRef.set(data, {merge: true}); if data = {dateExample: admin.firestore.Timestamp.fromDate(new Date('December 10, 1815'))}, но я бы предпочел сделать все в одном go.

Кто-нибудь решал это раньше? Боюсь, что если я испорчу пакетную фиксацию, я не смогу выбрать, что будет установлено первым.

1 Ответ

1 голос
/ 09 июля 2020

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

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

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

...