使用打字稿界面来表示来自 Firebase 的结构化数据?
Posted
技术标签:
【中文标题】使用打字稿界面来表示来自 Firebase 的结构化数据?【英文标题】:Using an typescript interface to represent structured data from Firebase? 【发布时间】:2021-10-09 02:54:23 【问题描述】:为了在我的 Angular 应用程序和 RealTimeDb 之间传递数据,我喜欢创建一个接口,我可以将实时 DB 返回的对象转换为特定接口,以帮助实现一致性和代码完成等。
在读取对象“类似地图”的结构时,像这样,
family:
name: Morgan,
children:
Jack : 22
Tara : 27
我尝试使用带有地图类型的接口,例如
interface Family
name: string;
children: Map<string, number>
我可以将数据库中的数据读入一个对象,该对象似乎某种符合带有声明的接口`
let data = ref.get()
let family = <Family>(await data).val();
但family.children
实际上不是地图,(因此没有 .get() 函数),它是一个对象,而且,我也无法更改地图并将整个内容写回数据库。
如果我使用 set,则 .children 将完全被忽略。
想知道如何使用会打扰读写结构化数据的接口来表示 firebase 数据?
【问题讨论】:
【参考方案1】:但 family.children 实际上并不是地图,(因此没有 .get() 函数),它是一个对象
你是对的,它是一个对象。所以你需要一个更好的类型来表示children
。
我会推荐Record<string, number>
。
如果您需要Map
,您需要创建一个映射并将所有键/值从子级插入其中。
【讨论】:
以上是关于使用打字稿界面来表示来自 Firebase 的结构化数据?的主要内容,如果未能解决你的问题,请参考以下文章
Cloud Functions Firebase CLI 预部署错误(打字稿)