Не может вернуть дату из облачной функции firebase?

Я пытаюсь просто вернуть дату из функции firebase:

import * as functions from 'firebase-functions';

const date = functions.https.onCall(() => {
  return {
    date: new Date(),
    iso: new Date().toISOString()
  };
});
export default date;

Но вот результат, который я получаю (используя функции firebase: shell):

RESPONSE RECEIVED FROM FUNCTION: 200, {
  "result": {
    "date": {},
    "iso": "2018-12-08T18:00:20.794Z"
  }
}

Обратите внимание, что объект Date () сериализуется как пустой объект, что кажется неправильным? Я ожидал хотя бы .toString () или что-то от экземпляра Date ...

Означает ли это, что я должен явно избегать возврата экземпляров Date? Я могу написать собственный сериализатор, который я оборачиваю вокруг своих функций, чтобы глубоко преобразовать экземпляры Date в строки через .toISODate () и т. д., Но похоже, что мне что-то не хватает!

Благодаря.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
8
0
848
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если у вас есть объект даты d, вам следует:

  1. Отправить время эпохи unix в миллисекундах с помощью d.getTime() или
  2. Отправьте ему сериализованную форму JSON с d.toJSON().

Я предлагаю №1, так как с разными системами легче взаимодействовать. Каждая система понимает даты во времени эпохи Unix, и это число не требует синтаксического анализа.

Спасибо. Я закончил тем, что создал рекурсивный сериализатор, который просматривает любые объекты ответа и преобразует даты в их представление ISO (строковое), но время вашей эпохи тоже было бы отличным. Для меня путаница заключалась в получении пустого объекта просто путем возврата экземпляра Date - я смиренно предположил, что такое поведение нарушает принцип «наименьшего количества сюрпризов»! Закрытие.

Eric 09.12.2018 21:02

Другие вопросы по теме