从 firestore 检索时出现未知类型属性

我正在尝试从cloud firebase获取数据


模型.ts


export interface Asignaturas {

    id: string;

    codigo: number; 

    nombre: string;

}

服务.ts


export class AsignaturasService {

    asignatura: Observable<Asignaturas[]>;


    constructor(private db: AngularFirestore){}

    

    getAsignaturas() {

    return this.asignatura = this.db.collection('asignaturas').snapshotChanges()

     .pipe(

           map(

               docArray => {

                  return docArray.map(

                                      doc => {

                                         return {

                                            id: doc.payload.doc.id,

                                            codigo: doc.payload.doc.data().codigo,

                                            nombre: doc.payload.doc.data().nombre


                                         };

                                      }

                                  )

               }

           )

     )}//subscribe( res => console.log(res))};

}

在上面的代码中,我试图获取我的接口 Asignatura 的属性。在控制台日志中,我可以看到值被正确检索,但是应用程序抛出错误


src/app/shared/asignaturas.service.ts(26,76) 中的错误:错误 TS2339:类型“未知”上不存在属性“codigo”。src/app/shared/asignaturas.service.ts(27,76):错误 TS2339:类型“未知”上不存在属性“nombre”。


知道出了什么问题。谢谢


森栏
浏览 67回答 1
1回答

一只名叫tom的猫

这是一个类型的事情,你的代码不知道这些属性的存在。您可以创建一个代表您的文档的接口,并将该类型和 doc.data() 断言到一个新对象上,即类型转换。为了让打字稿满意,你可以执行以下操作,但这只会在编译时为你提供保护。不确定这是否是您要找的。doc => {     const data = doc.payload.doc.data() as Asignaturas    return {        id: doc.payload.doc.id,        codigo: data.codigo,        nombre: data.nombre    };}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript