Google cloud firestore 设置文档失败时,如何捕获firebase函数中的错误?

Google cloud firestore 设置文档失败时,如何捕获firebase函数中的错误?,google-cloud-firestore,google-cloud-functions,Google Cloud Firestore,Google Cloud Functions,我有一个firebase云函数,可以在用户注册时使用用户数据创建用户文档。当set()失败时,如何返回错误?因为这不是一个http请求(在这种情况下我不想使用http请求),所以我没有响应。那么我如何捕捉错误呢 export const onUserCreated = functions.region('europe-west1').auth.user().onCreate(async user => { const privateUserData = { pho

我有一个firebase云函数,可以在用户注册时使用用户数据创建用户文档。当set()失败时,如何返回错误?因为这不是一个http请求(在这种情况下我不想使用http请求),所以我没有响应。那么我如何捕捉错误呢

export const onUserCreated = functions.region('europe-west1').auth.user().onCreate(async user => {

    const privateUserData = {
        phoneNumber: user.phoneNumber
    }

    const publicUserData = {
        name: 'Nameless'
    }

    try
    {
        await firestore.doc('users').collection('private').doc('data').set(privateUserData);
    }catch(error)
    {
        //What do I put here?
    }

    try 
    {
        await firestore.doc('users').collection('public').doc('data').set(publicUserData);
    }catch(error)
    {
        //What do I put here?
    }
});

catch-block将接收set-call中发生的错误:

试试看{
等待firestore.doc('users').collection('public').doc('data').set(publicUserData);
}捕获(错误){
//这里有错误信息。
}
您不能“返回”错误,因为客户端甚至不“知道”该函数正在运行,所以没有人响应

您可以进行
注册
收集,并在功能中为当前用户制作文档(使用
uid
作为文档id)。在该文档中,您可以放置希望用户知道的任何信息(状态、错误等)

因此,您的客户必须在此文档中添加一个侦听器,以了解他们的注册情况


在您的特定代码中,我认为错误在
doc('users')
中。我猜你的意思是
doc('users/'+user.uid)

是的,但是我如何将它们传递给客户端呢?还是云功能控制台?您通常会对响应执行此操作,但因为它不是http请求,而且我没有响应?此函数在后端触发,与前端没有直接关系。所以你不能直接这么做。处理这种情况的一种方法是进行自己的https函数调用,该调用将负责在后端创建用户的整个过程,而不使用这种触发器。在这种情况下,您可以向客户端返回错误响应。