我正在尝试从 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密钥,我应该如何更改测试界面以正确管理数据?
答案 0 :(得分:2)
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。