Свойство не существует для типа {} - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь получить список объектов из базы данных Firebase, используя snapshotChanges.

Angular версия: 7.2.0, Firebase версия: 5.8.1, RxJS версия: 6.3.3, AngularFire2: 5.1.1

Мой код следующий:

this.fbSubs.push(this.db .collection('availableExercises') .snapshotChanges() .pipe( map(docArray => { return docArray.map(doc => { return { idExercise: doc.payload.doc.id, name: doc.payload.doc.data().name, duration: doc.payload.doc.data().duration, calories: doc.payload.doc.data().calories }; }); }) ) .subscribe((exercises: Exercise[]) => { // code... }, error => { // code... }));

Когда я пытаюсь скомпилировать этот код, я получаю следующие ошибки:

ERROR in src/app/training/training.service.ts(41,44): error TS2339: Property 'name' does not exist on type '{}'.
src/app/training/training.service.ts(42,48): error TS2339: Property 'duration' does not exist on type '{}'.
src/app/training/training.service.ts(43,48): error TS2339: Property 'calories' does not exist on type '{}'.

Я считаю, что синтаксис может быть устаревшим из предыдущей версии RxJS, но я не могукажется, решить, что мне нужно изменить.

1 Ответ

0 голосов
/ 06 февраля 2019

Так что мне пришлось немного изменить код в .pipe.map (), чтобы вернуть данные как «Упражнение», вот так:

.pipe(
    map(docArray => {
      return docArray.map(doc => {
        const data = doc.payload.doc.data() as Exercise;
        const idExercise = doc.payload.doc.id;
        return {idExercise, ...data};
      });
    })
  )
...