Firebase可调用函数中的管道文件读取流

时间:2019-07-10 14:32:16

标签: node.js firebase express google-cloud-functions

我有一个Firebase 可调用函数,其定义如下:

exports = module.exports = functions.https.onCall((data, context) => {
    // ...
})

我要做的是像在此 http函数中一样,将文件读取流(从Firebase存储中读取)传递到我的可调用函数的响应中>:

exports = module.exports = functions.https.onRequest((req, res) => {
    const file = defaultStorageBucket.file(`/reports/myReport.pdf`);
    const readStream = file.createReadStream();
    readStream.pipe(res)
});

有可能实现这一目标吗?我注意到 context 参数包含一个 rawRequest 属性,该属性包含 Response ,但是我不确定如何使用它。

我的最终目标是立即在Firebase应用程序的客户端上开始下载文件。

1 个答案:

答案 0 :(得分:1)

这不是可调用函数的好用例。可调用函数始终返回JSON类型数据,并且该函数会使用您从其中返回的值自动对该数据进行序列化。不支持管道数据。如果您确实确实想从可调用函数中返回某个任意文件的内容,则必须读取内存中文件的全部内容,将其编码为字符串,然后将该字符串放入JavaScript对象中,然后返回该对象。这实际上并不是可调用函数的目的-在这种情况下,您最好坚持使用常规HTTP类型的函数。