为了账号安全,请及时绑定邮箱和手机立即绑定

Firebase 函数未向客户端应用返回响应

Firebase 函数未向客户端应用返回响应

慕运维8079593 2022-09-02 16:13:30
在 firebase 中运行可调用函数。在 Firebase 模拟器中本地运行它。我返回一个简单的字符串只是为了看看我是否可以将其取回给客户端,但我在响应中得到的只是。我不完全确定这里的问题是什么。我确信有些东西我不了解承诺,如果你在这个项目的另一部分通过另一个问题帮助我,我很感激。仍然试图理解所有这些是如何工作的。这是函数:{"data": null}exports.createAssetMux = functions.https.onCall((data, context) => {    console.log('data: ', data)    admin.firestore().collection('users').doc(data.id).update({        streamID: '98273498237'    }).then(() => {        console.log('update success')        return {data: 'update successful'}    }).catch(error => {        console.log('error message: ', error)        return {data: 'there was an issue updating document'}    });});此时只是尝试将数据返回到客户端。我在Firebase功能上遇到了一些其他问题,我正在尝试解决,所有这些都是相互关联的,只是不想使另一篇文章过于复杂。任何帮助都会很棒!提前致谢!
查看完整描述

1 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

返回语句未执行预期的操作。它们只是从您传递给的 lambda 函数返回一个值, 和 .它们不会从传递给 的较大函数返回值。thencatchonCall


可调用函数要求您返回一个承诺,该承诺使用要发送到客户端的对象进行解析。现在,传递给的函数始终不返回任何内容。您所要做的就是返回整个承诺链:onCall


    return admin.firestore().collection('users').doc(data.id).update({

        streamID: '98273498237'

    }).then(() => {

        console.log('update success')

        return {data: 'update successful'}

    }).catch(error => {

        console.log('error message: ', error)

        return {data: 'there was an issue updating document'}

    });

我添加的只是第一行开头的返回。


了解JavaScript承诺如何工作对于编写有效的函数至关重要。我强烈建议花一些时间来学习他们通常的模式。


查看完整回答
反对 回复 2022-09-02
  • 1 回答
  • 0 关注
  • 60 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号