Cloud Functions-TypeScript-“对象可能是'undefined'.ts(2532)”

时间:2019-04-27 16:20:54

标签: typescript google-cloud-functions

这是我的代码:

export const newPost = functions.firestore
.document('post/{postId}/')
.onCreate((snap, context) => {

    const postData = snap.data()
    const authorId = postData.uid    
});

我收到错误消息postData可能未定义,解决方法是检查postData!= null,然后在{}内使用postData对象。

这是文档中的代码:

exports.createUser = functions.firestore
.document('users/{userId}')
.onCreate((snap, context) => {
  // Get an object representing the document
  // e.g. {'name': 'Marie', 'age': 66}
  const newValue = snap.data();

  // access a particular field as you would any JS property
  const name = newValue.name;

  // perform desired operations ...
});

这里没有提到可能存在未定义的对象newValue,也通过阅读许多带有Firestore的云函数示例,我还没有看到人们会在使用它之前检查.data()!= null

2 个答案:

答案 0 :(得分:1)

几乎可以肯定,您的TypeScript配置已启用严格的类型检查,当您尝试访问可能为null或未定义的内容的属性时,这将向您发出此警告。检查您的tsconfig.json并在编译器选项中查找"strict": true"DataSnapshot.data() API的TypeScript绑定表明,data()的返回值可以是任何值(包括null或未定义),并且TypeScript强制您在编译时正确处理此事实,以使您的代码不会在运行时崩溃。

您正在查看的示例代码是纯JavaScript,没有任何类型检查。假定快照不会为空或未定义。如果您发现这令人困惑或有问题,请使用文档页面顶部的“发送反馈”链接来说明使您感到困惑的地方。

答案 1 :(得分:0)

有点hacky,但是可以快速修复const postData: any = snap.data()