【问题标题】:unknown type property when retrieving from firestore从 Firestore 检索时的未知类型属性
【发布时间】:2020-11-08 21:26:33
【问题描述】:

我正在尝试从 Cloud Firebase 获取数据

model.ts

export interface Asignaturas {
    id: string;
    codigo: number; 
    nombre: string;
}

services.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:“未知”类型上不存在属性“名词”。

知道什么是错的。谢谢

【问题讨论】:

    标签: javascript angular google-cloud-firestore


    【解决方案1】:

    这是一个类型的东西,你的代码不知道这些属性的存在。您可以创建一个代表您的文档的接口,并将该类型 & doc.data() 断言到一个新对象Type casting。 为了让打字稿开心,你可以做以下事情,但这只会在编译时为你提供保护。不确定这是否是您要查找的内容。

    doc => { 
        const data = doc.payload.doc.data() as Asignaturas
        return {
            id: doc.payload.doc.id,
            codigo: data.codigo,
            nombre: data.nombre
        };
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-21
      • 2020-09-13
      • 2016-11-04
      • 1970-01-01
      • 2021-12-10
      • 2014-04-04
      相关资源
      最近更新 更多