Как правильно "toDate ()" Firestore timestamp для больших документов? - PullRequest
0 голосов
/ 04 октября 2018

С недавних пор Firestore возвращает метки времени не как объекты Date, а как объекты Timestamp.Это означает, что после каждого запроса вы должны сделать что-то вроде этого:

// Old:
const date = snapshot.get('created_at');
// New:
const timestamp = snapshot.get('created_at');
const date = timestamp.toDate();

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

let user = // get user from firestore

user.created = user.created.toDate()
user.lastUpdated = user.lastUpdated.toDate()
user.foo.foo.foo.foo.fooDate1 = user.foo.foo.foo.foo.fooDate1.toDate()
user.foo.foo.foo.fooDate1 = user.foo.foo.foo.fooDate1.toDate()
...
user.foo.fooDate99 = user.foo.fooDate99.toDate()

Есть ли способ обойти это?

Я должен сделать это со всеми своими документами, даже если мне не нужны временные меткидля преобразования, поскольку различные зависимости (например, значение) прерываются с ошибками «Non-POJO», когда в моем объекте есть необработанные временные метки пожарного хранилища.

Есть ли возможность напрямую преобразовать все временные метки документа в обычныйОбъекты даты, или ручной способ - единственный вариант?

1 Ответ

0 голосов
/ 04 октября 2018

Нет простой опции, которую можно переключить, чтобы это произошло.

Если вы не хотите вручную изменять их все, вы можете написать некоторый код, чтобы рекурсивно опускать все свойства всех ваших объектов, проверьтекоторые выглядят как метка времени объектов (например, у него есть функция toDate), и, если это так, выполните преобразование.

...