undefined не повторяется (не может прочитать свойство Symbol (Symbol.iterator)) - PullRequest
1 голос
/ 23 мая 2019

Я пытаюсь перебрать fileList для выполнения запроса на удаление.Сначала я выбрал данные из таблицы "files" в базе данных, где вводится атрибут "postnumber"=user.Затем он сохраняется в "fileList:Files[]".Затем выполните цикл по этому fileList для выполнения запроса на удаление.но он продолжает говорить, что

"ОШИБКА TypeError: undefined не повторяется (не может прочитать свойство Symbol (Symbol.iterator))".См. Это изображение =>

error.jpg

forum-admin-list.component.ts

import { FileService } from 'src/app/shared/file.service';
import { Files } from 'src/app/shared/files.model';
export class ForumAdminListComponent {
fileList:Files[];
onDelete(pNo:string){ 
        this.fservice.getPost(pNo).subscribe(actionArray => {
          this.fileList = actionArray.map(item => {
            return {
              id: item.payload.doc.id,
              ...item.payload.doc.data()
            } as Files;
          })
        });
        for(let i of this.fileList){
          this.storage.storage.refFromURL(i.path).delete();
          this.firestore.doc("files/"+i.id).delete();
        }
  }
}

files.model.ts

export class Files {
    id:string;
    pNo:string;
    downloadURL:string;
    path:string;
}

file.service.ts

export class FileService {
    formData: Files; 
    constructor(private firestore: AngularFirestore) { }

    getPost(userRef){
      return this.firestore.collection('files',ref=>ref.where('pNo','==',userRef)).snapshotChanges();
    }
}

1 Ответ

0 голосов
/ 23 мая 2019

Вы перебираете fileList за пределами subscribe(), что означает, что на самом деле он не будет ждать разрешения наблюдаемого. Попробуйте сделать петлю внутри вашего subscribe().

onDelete(pNo:string){ 
  this.fservice.getPost(pNo).subscribe(actionArray => {
    this.fileList = actionArray.map(item => {
      return {
        id: item.payload.doc.id,
        ...item.payload.doc.data()
      } as Files[];

      for(let i of this.fileList){
        this.storage.storage.refFromURL(i.path).delete();
        this.firestore.doc("files/"+i.id).delete();
      }
    })
  });
}

Также вы можете отметить результат подписки as Files[] вместо as File

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...