«Максимальный размер стека вызовов превышен при возврате» конфликтует с «Подписка не существует для типа void» - PullRequest
0 голосов
/ 17 ноября 2018

Я исправил «подписка не существует для типа void», добавив функцию return on my get в службу firestore. Однако возникла другая проблема: «Превышен максимальный размер стека вызовов при возврате».

Я пытался исправить одну из них, но в результате возникла другая проблема

firestore.service.ts

public getRoom() {
    this.rooms = this.afs
      .collection('Room')
      .snapshotChanges()
      .pipe(
        map(changes => {
          return changes.map(a => {
            const data = a.payload.doc.data() as Room;
            data.id = a.payload.doc.id;
            return data;
          });
        })
      );

//Maximum call stack size exceeded when i added return here
    return this.getRoom().map(response => response.json());
  }

component.ts

  ngOnInit() {
//subscribe does not exist on type void came up when no return on get
    this.firestore.getRoom().subscribe((room: Room[]) => {
      this.arr = room;
      console.log(this.arr);
    });
  }

1 Ответ

0 голосов
/ 17 ноября 2018

Проблема с рекурсивным вызовом функции getRoom ().Вы вызываете getRoom () внутри getRoom ();

Удалите линию для самостоятельного вызова как -

public getRoom() {
    return this.rooms = this.afs
      .collection('Room')
      .snapshotChanges()
      .pipe(
        map(changes => {
          return changes.map(a => {
            const data = a.payload.doc.data() as Room;
            data.id = a.payload.doc.id;
            return data;
          });
        })
      );

   //Maximum call stack size exceeded when i added return here
   //return this.getRoom().map(response => response.json());
  }
...