Firebase 云函数:保存 TypeScript Map() - 如何?

我正在开发一个用 TypeScript 编写的 Firebase Cloud Functions,它应该将实例 Map() 保存到 Cloud Firestore。(地图的键是用户 ID,值是具有 2 个简单属性的对象;由于键的性质,我无法在运行前知道它们。)尝试直接保存地图对象时,我得到:


参数“data”的值不是有效的 Firestore 文档。输入不是纯 JavaScript 对象(在字段“member_details”中找到)


另一种方法是避免使用 Map() 对象并使用 {} 对其进行初始化 - 如下所示:


  let memberDetailsMap = {};

  this.memberDetails.forEach(md => {

    let payload = {

      "name": md.name,

      "age": md.age,

    }

    memberDetailsMap[md.uid] = payload; // <- !!!!!!!! ERROR

  })

这甚至阻止了我将 TS 编译为带有消息的 JS:


元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型“{}”。在“{}”类型上找不到带有“字符串”类型参数的索引签名。


我尝试的另一件事是使用JSON.stringify(memberDetailsMap) - 但这导致了一个空对象。


不幸的是,我不知道如何解决这个问题。你对此有一些提示/解决方案吗?


谢谢你的帮助!


皈依舞
浏览 150回答 1
1回答

翻过高山走不出你

您可以通过显式设置类型来解决此问题memberDetailsMap:let&nbsp;memberDetailsMap:&nbsp;{&nbsp;[key:&nbsp;string]:&nbsp;any}&nbsp;=&nbsp;{};
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript