【问题标题】:how to check if a variable is Firestore Document Data type?如何检查变量是否为 Firestore 文档数据类型?
【发布时间】:2021-06-18 04:54:50
【问题描述】:

我在 Google Cloud Function 中使用 Typescript 和 NodeJS

如果我从 Firestore 中获得这样的文档

const result = await db.doc(`events/${eventID}`).get();
const myData = result.data();

那么myData 的类型就是FirebaseFirestore.DocumentData 像这样

在我的代码的其他部分,

我需要检查一个变量是否具有FirebaseFirestore.DocumentData 的类型或不使用下面的代码

if ( myVariable instanceof FirebaseFirestore.DocumentData ) {

   // do something

}

但我有这样的错误

类型“typeof”上不存在属性“DocumentData” FirebaseFirestore'

那么如何检查我的变量是否是一种 Firestore 文档数据?

我看到 this answer ,它需要导入一些东西以便我可以访问它。如何为FirebaseFirestore.DocumentData 做类似的事情?

【问题讨论】:

  • 不是直接的答案,但您不能简单地检查 result.data() 是否未定义,因为它的唯一选项是未定义或类型文档数据。
  • 对不起,这是我的错。我会修改我的问题。上面的代码实际上是我真实案例的简化版本。当我需要检查我的变量是否为 FirebaseFirestore.DocumentData 时,它不再是可选的,我的意思是,实际上我需要检查我的变量是 FirebaseFirestore.DocumentData 还是其他复杂的数据类型(未定义)

标签: node.js typescript firebase google-cloud-firestore google-cloud-functions


【解决方案1】:

与您的其他 question 一样,您正在混淆 Typescript 类型和 JavaScript 对象。

FirebaseFirestore.DocumentData 指的是 TypeScript 编译器用作编译时检查的类型。 TypeScript 编译为 JavaScript,而 JavaScript 在运行时不知道这些类型。因此,检查返回数据是否是文档数据的唯一方法是您必须检查字段是否存在或检查未定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 2019-01-09
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    相关资源
    最近更新 更多