如何使用Google Cloud函数将数据从DocumentSnapshot转换为自定义类型,以便利用自动完成功能?

时间:2019-07-30 04:09:45

标签: typescript google-cloud-firestore google-cloud-functions typescript-typings

我非常喜欢这样的事实,即在打字稿中开发云函数时,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。

1 个答案:

答案 0 :(得分:2)

如果您的文档字段与类型或接口描述完全匹配,则只需将snap.data()返回的DocumentData对象强制转换为该类型。

const user = snap.data() as User

请记住,运行时的任何不一致都可能导致问题,例如,缺少文档字段或联合类型中的意外字符串。简单地进行转换可以很方便,但是您必须非常确信所有内容都将符合类型或接口的形状。