Я пытаюсь просто вернуть дату из функции 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 () и т. д., Но похоже, что мне что-то не хватает!
Благодаря.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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