Получение ошибки отметки времени в угловом приложении и интеграция с Firebase - PullRequest
0 голосов
/ 25 апреля 2018

Я занимаюсь разработкой приложения Angular с FireBase.

Это ошибка, которую я получаю:

Поведение для объектов Date, хранящихся в Firestore, изменится, и ваше приложение может сломаться.Чтобы скрыть это предупреждение и убедиться, что ваше приложение не сломалось, вам необходимо добавить следующий код в свое приложение перед вызовом любых других методов Cloud Firestore:

 const firestore = firebase.firestore();
 const settings = {/* your settings... */ timestampsInSnapshots: true};
 firestore.settings(settings);

С этим изменением метки времени, сохраненные в Cloud Firestore, будутчитать как объекты Firebase Timestamp, а не как системные объекты Date.Таким образом, вам также необходимо обновить код, ожидающий дату, а не метку времени.Например:

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

Пожалуйста, проверяйте все существующие использования даты, когда вы включаете новое поведение.В будущем выпуске поведение изменится на новое, поэтому, если вы не выполните эти шаги, ВАШЕ ПРИЛОЖЕНИЕ МОЖЕТ ПЕРЕРЫВ.

Это мой файл package.json:

  "dependencies": {
    "@angular/animations": "^5.2.0",
    "@angular/common": "^5.2.0",
    "@angular/compiler": "^5.2.0",
    "@angular/core": "^5.2.0",
    "@angular/forms": "^5.2.0",
    "@angular/http": "^5.2.0",
    "@angular/platform-browser": "^5.2.0",
    "@angular/platform-browser-dynamic": "^5.2.0",
    "@angular/router": "^5.2.0",
    "angularfire2": "^5.0.0-rc.6.0",
    "core-js": "^2.4.1",
    "firebase": "^4.13.1",
    "rxjs": "^5.5.6",
    "zone.js": "^0.8.19"
  },
  "devDependencies": {
    "@angular/cli": "~1.7.4",
    "@angular/compiler-cli": "^5.2.0",
    "@angular/language-service": "^5.2.0",
    "@types/jasmine": "~2.8.3",
    "@types/jasminewd2": "~2.0.2",
    "@types/node": "~6.0.60",
    "codelyzer": "^4.0.1",
    "jasmine-core": "~2.8.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~2.0.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.1.2",
    "ts-node": "~4.1.0",
    "tslint": "~5.9.1",
    "typescript": "~2.5.3"
  }

Firebase -v: 4.13.1 AngularFire -v: 5.0.0-rc.6.0 ОС: Mac OSX / Windows (пробовал на обеих платформах.)

Кроме того, что является причиной этой ошибки?

1 Ответ

0 голосов
/ 26 апреля 2018

Я получил исправление от egaviriarestrepo - https://github.com/angular/angularfire2/issues/1575

Где бы вы ни вызывали AngularFirestore, вам нужно добавить следующие две строки в конструкторе:

const settings = {timestampsInSnapshots: true};
afs.app.firestore().settings(settings);

Это должно выглядеть примерно так:

export class CoreModule {
  constructor( private afs: AngularFirestore) {
        const settings = {timestampsInSnapshots: true};
        afs.app.firestore().settings(settings);
  }
}

, если приведенный выше код не работает, попробуйте следующий код:

export class CoreModule {
  constructor( private afs: AngularFirestore) {
        const settings = {timestampsInSnapshots: true};
        afs.firestore.settings(settings);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...