Typescript 并非所有代码路径都返回值(对于可调用的google cloud函数)
我有一个云函数,当我使用一些异步函数并在每个可能的输出中输入一个“return”时,并不是所有的代码路径都返回一个值 我尝试过删除我的数据库调用,只需要返回{data:{…};'这使得错误消失了 我还尝试将所有内容包装在“try”“catch”块中 我现在有我期望的工作,就是两个块get(),然后()…catch() 我希望能够使用firebase deploy部署我的云功能,但我得到的却是部署错误:Typescript 并非所有代码路径都返回值(对于可调用的google cloud函数),typescript,google-cloud-firestore,google-cloud-functions,callable,Typescript,Google Cloud Firestore,Google Cloud Functions,Callable,我有一个云函数,当我使用一些异步函数并在每个可能的输出中输入一个“return”时,并不是所有的代码路径都返回一个值 我尝试过删除我的数据库调用,只需要返回{data:{…};'这使得错误消失了 我还尝试将所有内容包装在“try”“catch”块中 我现在有我期望的工作,就是两个块get(),然后()…catch() 我希望能够使用firebase deploy部署我的云功能,但我得到的却是部署错误: src/index.ts:83:62 - error TS7030: Not all cod
src/index.ts:83:62 - error TS7030: Not all code paths return a value.
83 export const getUsersInHere = functions.https.onCall((data, context) =>
注意
我想我已经发现,当我在可调用的签名中添加“async”时,“firestore部署”可以工作,但是“警告/错误”仍然保留在Microsoft Studio代码中(并非所有代码路径都返回值.ts(7030))
export const getUsersInThisChatRoom=functions.https.onCall(async(数据,上下文)=>使用callables,您可以直接返回要序列化并发送到客户端的对象,也可以返回与要发送的对象解析的承诺。您只需在
中返回承诺,否则如果块:
// note the return added to the next line
return db.collection(`InHere/${my_uid}`).get().then(snapshot =>
{
return {data:{}, success:true};
}).catch(e =>
{
return {data:{message:"No last message yet...", success:false}};
});
这将返回解析为您从then
或catch
回调返回的值的承诺
你没有义务使用async/await,但是如果你这样做,你应该用正确的async/await语法完全替换then和catch块。它看起来会非常不同。hi,不。去掉最后一个else可以不返回任何内容。我得到:src/index.ts:83:63-错误TS7030:并非所有代码路径都返回值。我注意到I c通过在函数签名onCall中添加async进行部署,尽管我仍然看到一个警告,如果
分支没有返回任何内容,那么您的else将被警告。这些返回语句从调用然后
和catch
时声明的内部函数返回。啊,我明白了,我想我需要使用'wait',然后,因为它在onCall中出现时没有返回I don’我没有给出使用“回调”/“完成块”的可能性?是的,我认为这样做很有效。如果你想发布,我会接受这个答案
// note the return added to the next line
return db.collection(`InHere/${my_uid}`).get().then(snapshot =>
{
return {data:{}, success:true};
}).catch(e =>
{
return {data:{message:"No last message yet...", success:false}};
});