typescript - 如何从 Firestore 读取地图
问题描述
我正在尝试将Firestore中的数据读入我的 TypeScript 项目。
在Firestore中,我在该字段下有一张地图mapName
我在使用时得到的以下数据结构JSON.stringify(change.after.data())
const test: Test = {
mapName: {
"v3mioXc3VoFgfj0WEq": {
isNormalSubscription: false,
},
"as12oXc3VoFas12WEq": {
isNormalSubscription: true,
},
},
};
interface Test {
mapName: Map<string, any>
}
我遇到了以下错误:
Type '{ v3mioXc3VoFgfj0WEq: { isNormalSubscription: false; }; }' is not assignable to type 'Map<string, any>'.
Object literal may only specify known properties, and '"v3mioXc3VoFgfj0WEq"' does not exist in type 'Map<string, any>'.
由于v3mioXc3VoFgfj0WEq
并且as12oXc3VoFas12WEq
是我事先不知道的 Firestore 密钥,我应该如何更改我的测试界面以正确管理数据?
解决方案
Firestore 不接受或返回 ES6Map
类型对象。它只适用于普通的旧 JavaScript 对象。当你调用data()
aDocumentSnapshot
时,你会得到这些普通对象之一。对象的属性与文档中的字段相匹配。
const obj = snapshot.data() // plain object
const mapName = obj.mapName // another plain object
const field1 = mapName.v3mioXc3VoFgfj0WEq
const field2 = mapName.as12oXc3VoFas12WEq
如果您更愿意使用Map
对象,则必须将普通对象转换为新 Map。
推荐阅读
- c# - 使用 System.Text.Json 自定义反序列化 - 将字段分组到对象中
- python - 如何在 seaborn 方面添加政治边界和海岸线?
- c++ - TdxSpreadSheet -> SaveToFile 编码问题
- drag-and-drop - Ag-grid 将项目拖放到可编辑的网格单元中
- python - Wordpress 如何使用 python 和 REST API 获取高级自定义字段内容
- java - groovy:捕获:java.sql.SQLException:即使使用@GrabConfig(systemClassLoader = true)也找不到合适的驱动程序
- python-3.x - 使用 Python 和 Selenium Chrome 驱动程序
- arrays - 错误:C 中的预期表达式 - 无法将变量定义为数组的长度
- featuretools - 并行化特征工具 dfs
- arrays - Excel 365 函数计算原始列表中数组列表的出现次数