Firestore получает Javascript Date вместо Timestamp - PullRequest
0 голосов
/ 26 мая 2018

Я использую Angular 6 и Firestore для разработки приложения, в котором я сохраняю свои даты как объект Date Javascript.Проблема в том, что когда я делаю snapshotChanges(), он возвращает Unix Timestamp вместо объекта Date, который находится в моей базе данных.

Я искал решения онлайн ( this , и это ) и нашел эту опцию конфигурации для Firestore:

{ timestampsInSnapshots: false }

Я пытаюсь применить это в своем компоненте приложения следующим образом:

constructor(private _db: AngularFirestore) {
    _db.firestore.settings({ timestampsInSnapshots: false });
  }

Но потом я получаю это ошибка :

Firestore has already been started and its settings can no longer be changed. You can only call settings() before calling any other methods on a Firestore object.

Я также пытался изменить настройки перед вызовом snapshotChanges() но это также не влияет на поведение.

Примечание: я также использую AngularFirestoreModule.enablePersistence()

Обновление:

Я попытался это , и это дает мне эту ошибку:

@firebase/firestore: Firestore (5.0.3): The behavior for Date objects stored in Firestore is going to change AND YOUR APP MAY BREAK.

Любые предложения будут отличными.

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Мне удалось достичь требуемой функциональности, добавив следующий код в контролируемое мое приложение.

constructor(private _db: AngularFirestore) {
  _db.firestore.settings({ timestampsInSnapshots: false });
  _db.firestore.enablePersistence();
}

Помните, не AngularFirestoreModule.enablePersistence(), если вы собираетесь использовать вышеуказанный код.Достаточно просто добавить AngularFirestoreModule.

0 голосов
/ 26 мая 2018

Хм, попробуйте позвонить _db.app.firestore().settings({}), потому что вы вносите изменения в конфигурацию приложения.И поскольку вы упомянули, что вам нужна автономная поддержка enablePersistence(), попробуйте вызвать ее в вашем компоненте, в данном случае, вместо корневого модуля, но после вызова settings ().

В вашем компоненте:

constructor(private _db: AngularFirestore) {
    _db.app.firestore().settings({ timestampsInSnapshots: false });
    _db.app.firestore().enablePersistence();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...