我有一个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应用程序的客户端上开始下载文件。
答案 0 :(得分:1)
这不是可调用函数的好用例。可调用函数始终返回JSON类型数据,并且该函数会使用您从其中返回的值自动对该数据进行序列化。不支持管道数据。如果您确实确实想从可调用函数中返回某个任意文件的内容,则必须读取内存中文件的全部内容,将其编码为字符串,然后将该字符串放入JavaScript对象中,然后返回该对象。这实际上并不是可调用函数的目的-在这种情况下,您最好坚持使用常规HTTP类型的函数。