我非常喜欢这样的事实,即在打字稿中开发云函数时,firebase的打字非常好。我希望能够对数据库中的实体(例如用户等)使用自动完成功能。如何正确创建类?
我认为应该是这样的
type User = {
activeUntil: admin.firestore.Timestamp
createdAt: admin.firestore.Timestamp
sex: 'men' | 'woman'
name: string
}
export default async function onCreate (snap : FirebaseFirestore.DocumentSnapshot) {
const user:User= snap.data()
console.log('user:- ', user)
return
}
我收到错误消息:我收到以下错误消息:类型'DocumentData'缺少类型'User'中的以下属性:activeUntil,createdAt,sex,name。
答案 0 :(得分:2)
如果您的文档字段与类型或接口描述完全匹配,则只需将snap.data()
返回的DocumentData对象强制转换为该类型。
const user = snap.data() as User
请记住,运行时的任何不一致都可能导致问题,例如,缺少文档字段或联合类型中的意外字符串。简单地进行转换可以很方便,但是您必须非常确信所有内容都将符合类型或接口的形状。