firebase에서 중첩 된 데이터를 검색하고 유형을 안전하게 유지하려고합니다. 나는 이것을 보았습니다 : https://github.com/aaronksaunders/afwithngcli/blob/master/src/app/afwithngcli.component.ts 그러나 인터페이스를 사용하지 않습니다. (이 샘플 간체)3 단계 중첩 된 데이터를 검색하고 각도 2와 각도 1200의 인터페이스를 사용하여 안전하게 유지하십시오.
내 인터페이스 :
export interface IStudy {
$key?: string;
description: string;
subjects: ISubject[];
}
export interface ISubject {
$key?: string;
description: string;
someOtherData: string;
classes: IClass[];
}
export interface IClass {
$key?: string;
description: string;
someOtherData: string;
}
내 서비스 :
@Injectable()
export class MyService {
private myStudies$: FirebaseListObservable<IStudy[]>;
constructor(af: AngularFire, auth: AuthService) {
this.myStudies$ = af.database.list(`/studies/${auth.id}`).map((studies: IStudy[]) => {
return studies.map(study => {
study.subjects = af.database.list(`/subjects/${study.$key}`).map((subjects: Subject[]) => {
return subjects.map(subject => {
subject.classes = af.database.list(`/classes/${subject.$key}`);
return subject;
})
});
return study;
})
})
}
getMyStudies(): Observable<IStudy[]> {
return this.myStudies$;
}
}
내가 그래서, 관찰 가능한 모든 주제와 클래스를 포함한 모든 공부를 얻을 수있다 수행하려고 하나의 구성 요소에서 모든 레벨을 표시하고 편집 할 수 있습니다.
Type 'Observable<IStudy[]>' is not assignable to type 'FirebaseListObservable<IStudy[]>'.
Property '_ref' is missing in type 'Observable<IStudy[]>'.
Type 'Observable<ISubject[]>' is not assignable to type 'ISubject[]'.
Property 'length' is missing in type 'Observable<ISubject[]>'.
Type 'FirebaseListObservable<any[]>' is not assignable to type 'IClass[]'.
Property 'length' is missing in type 'FirebaseListObservable<any[]>'.
문제는 생성자에 오류가 this.myStudies의 $, study.subjects 및 subject.classes에 할당 오류가 있음을 강조 :
나는 오류가 말을 얻을.
내가 뭘 잘못하고 있니?
문제는 생성자에 있습니다. 내 편집을 참조하십시오. –
대답을 편집하여 도움이되는지 확인하십시오. 새 오류 붙여 넣기가 나타나면 – MatWaligora
같은 오류가 발생합니다. 당신은 깊은 중첩을 피하라고 제안하지만 어떻게 해결할 것이라고 제안합니까? 내 질문에 링크에서 볼 수 있듯이 다른 사람들이 중첩을하고 있으므로 가능한 경우에만 작동하도록 할 수 없습니다. –