![](/img/trans.png)
[英]Promise.all bringing up "TypeError: undefined is not iterable (cannot read property Symbol(Symbol.iterator))"
[英]undefined is not iterable (cannot read property Symbol(Symbol.iterator))
我正在尝试遍历 fileList 以执行删除查询。 首先,我从数据库中的表“文件”中获取数据,其中属性"postnumber"=user
输入。 然后将其保存到“ fileList:Files[]
”中。 然后循环遍历此 fileList 以执行删除查询。 但它一直在说
“错误类型错误:未定义不可迭代(无法读取属性 Symbol(Symbol.iterator))”。 看这张图 =>
论坛管理员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();
}
}
}
文件.model.ts
export class Files {
id:string;
pNo:string;
downloadURL:string;
path:string;
}
文件.service.ts
export class FileService {
formData: Files;
constructor(private firestore: AngularFirestore) { }
getPost(userRef){
return this.firestore.collection('files',ref=>ref.where('pNo','==',userRef)).snapshotChanges();
}
}
您正在subscribe()
之外的fileList
循环,这意味着它实际上不会等待 Observable 被解析。 尝试在您的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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.