Почему я получаю эти две ошибки, пытаясь использовать метод службы Angular, который извлекает данные из базы данных Firestore? - PullRequest
0 голосов
/ 16 июня 2020

Я следую за курсом, связанным с Angular и базой данных Firestore, и у меня есть две следующие проблемы:

В классе контроллера у меня есть этот метод ngOnInit () :

ngOnInit () {

this.course = this.route.snapshot.data['course'];
this.lessons = this.coursesService.findLessons(this.course.id)
    .subscribe(
      lessons => this.lessons = lessons
    );

}

Как видите, я подписываюсь на метод courseService.findLessons () , и это код этого метода службы:

findLessons (courseIs: string, sortOrder: OrderByDirection = 'as c', pageNumber = 0, pageSize = 3): Observable {

return this.db.collection('courses/${courseId}/lessons',
            ref => ref.orderBy('seqNo', sortOrder)
            .limit(pageSize)
            .startAfter(pageNumber * pageSize))
            .snapshotChanges()
            .pipe(
              map(snaps => convertSnaps<Lesson>(snaps)),
              first()
            )

}

В этом методе службы Visual Studio Code выдает мне ошибку в этой строке:

sortOrder: OrderByDirection = 'asc',

ошибка говорит:

Не удается найти имя 'OrderByDirection'. ts (2304)

При вызове этого метода службы в моем контроллере ngOnInit () метод дает мне ошибку на this.lessons (что ранее определено как уроков: Урок [];

Type 'Subscription' is missing the following properties from type 'Lesson[]': length, pop, push, concat, and 26 more.ts(2740)

Что именно означает? Почему я получаю эту ошибку? Что за м я скучаю? Как попробовать исправить?

1 Ответ

2 голосов
/ 16 июня 2020
  1. Параметры из ActivatedRoute обычно представляют собой сериализованные строки объектов. Проверьте, является ли this.course.id допустимым значением.

  2. Литералы шаблона должны быть заключены в обратные кавычки вместо кавычек.

Замените

'courses/${courseId}/lessons'

на

`courses/${courseId}/lessons`
...