'DocumentData |云功能上发生“未定义”错误

时间:2020-10-10 02:55:44

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

我试图更改Cloud Function上Firestore中保存的用户的名称,但是出现以下错误,我无法部署它。

属性'名称'在类型'DocumentData |中不存在。未定义”。

代码在这里。

def findTwoLargest(*args):
    max1 = 0
    max1 = max(args)
    args.sort()
    max2 = 0
    max2 = args[-2]
    return max1, max2
    
m1, m2 = findTwoLargest(-2, 30, -4, 9, 1, 6)
print(m1, m2)

对不起,请让我知道如何解决此问题。

1 个答案:

答案 0 :(得分:1)

4 1 : 6 Operator: + 2 : 5 Operator: - 3 : 2 Operator: * 4 : 5 Operator: = Calculating... 11 3 10 可以返回DocumentData对象,或者如果未找到文档,则返回undefined。错误是TypeScript告诉您,您可能正试图从未定义的对象中提取userDoc.data()属性,这会使程序崩溃。

您应该做的是在访问属性之前检查以确保已定义返回值:

name

请注意,我删除了对const userDoc = await admin .firestore() .doc(`users/${uid}`) .get() const data = userDoc.data() if (data) { const { name } = userDoc.data() if (name === 'firstName') { userDoc.ref.update({ name: 'secondName', }) } } else { // decide what you want to do if the document doesn't exist } 的呼叫。由于等待的方式,这里完全没有必要。

此外,您似乎正在使用Firestore库的非常老版本。很久以前,DocumentData已被DocumentSnapshot取代。