gpt4 book ai didi

javascript - Firestore云功能评论计数器: How to fix "Object is possibly undefined"?

转载 作者:行者123 更新时间:2023-12-01 01:11:07 24 4
gpt4 key购买 nike

要求的行为:
我想在 typescript 中创建一个云函数,每次将文档添加到帖子集合的评论子集合时都会执行该函数。执行应该将父文档的计数器加一。

当前状态
如果我用 console.log() 语句替换“get Promise”,则每次创建文档时都会执行云函数。

问题
它不执行更新部分。相反,它会抛出一个错误:对象可能“未定义”

解决方法
我在不同的云函数中遇到了类似的问题,并使用 if 语句来解决它。但是,我不明白如何在这里应用它。

How can I fix this issue? Do I have to use an if statement?

我的云功能
enter image description here代码(如果您想复制它)

export const createSubCollTrigger = 
functions.firestore.document('posts/{postID}/comments/{commentID}').onCreate((snap, context) => {

admin.firestore().doc('posts/{postID}').get()
.then(snapshot => {
const data = snapshot.data()
return admin.firestore().doc('posts/{postID}').update({postCommentsTot: data.postCommentsTot + 1});
})

.catch(error => {
console.log(error)
return
})
})

**

最佳答案

该错误告诉您错误发生在第 38 行。由于您没有说出具体是哪一行,所以我猜测错误就在这一行:

    const data = snapshot.data()

根据API docs ,data() 返回 DocumentData 或 undefined,其中 undefined 表示未找到文档。在 TypeScript 中,这意味着您的代码需要表明它已准备好处理 undefined 才能访问返回对象的属性。你不在这里这样做。正如您所建议的,您需要使用条件来确定文档是否存在:

const data = snapshot.data()
if (data) {
return admin.firestore().doc('posts/{postID}').update({postCommentsTot: data.postCommentsTot + 1});
}
else {
return null
}

或者类似的东西。

关于javascript - Firestore云功能评论计数器: How to fix "Object is possibly undefined"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55140206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com