我正在尝试将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,我应该如何更改测试接口以正确管理数据?
发布于 2020-09-17 07:24:42
Firestore不接受或返回ES6 Map
类型对象。它只适用于普通的旧JavaScript对象。当您在一个data()
上调用DocumentSnapshot
时,您会得到其中一个普通对象。对象的属性与文档中的字段匹配。
const obj = snapshot.data() // plain object
const mapName = obj.mapName // another plain object
const field1 = mapName.v3mioXc3VoFgfj0WEq
const field2 = mapName.as12oXc3VoFas12WEq
如果您希望使用Map
对象,则必须将普通对象转换为新的Map。
https://stackoverflow.com/questions/63941195
复制相似问题