我正在尝试从cloud firebase获取数据模型.tsexport interface Asignaturas { id: string; codigo: number; nombre: string;}服务.tsexport 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”。知道出了什么问题。谢谢
1 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
这是一个类型的事情,你的代码不知道这些属性的存在。您可以创建一个代表您的文档的接口,并将该类型和 doc.data() 断言到一个新对象上,即类型转换。为了让打字稿满意,你可以执行以下操作,但这只会在编译时为你提供保护。不确定这是否是您要找的。
doc => {
const data = doc.payload.doc.data() as Asignaturas
return {
id: doc.payload.doc.id,
codigo: data.codigo,
nombre: data.nombre
};
}
添加回答
举报
0/150
提交
取消