Firebase存储桶下载文件需要很多时间

时间:2018-10-15 18:34:08

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

我正在使用Firebase作为BaaS开发应用程序。

上传图像(大小不超过90KB)并触发云功能时,我遇到了时间问题。

我的触发器在上传结束时开始:

exports.uploadControl = functions.storage.object().onFinalize((req, res) => {
    uploadControl.handler(req, res);
    return 0;
});

而且,在uploadControl内部,我有:

return mkdirp(tempLocalDir).then(() => {
    console.log('1. mkDirp - OK!');
    console.log('2. Download starts...');
    return bucket.file(filePath).download();
}).then((content) => {
    console.log('3. Download ends');
    return 0;
});

此代码可以正常工作,但问题是在步骤2和3之间花费的时间... 需要24秒或更长时间。

该如何解决?有什么代码问题吗?还是有Firebase设置可以解决?

Tks。

1 个答案:

答案 0 :(得分:1)

这里有两个错误:

  1. onFinalize()回调不像HTTP触发器那样接收resreq对象。它接收对象元数据作为第一个参数。 Read the documentation for details.

  2. 背景触发类似此must return a promise when all the work is complete。否则,Cloud Functions会过早关闭工作,因为它不知道何时完成。如果您想从另一个函数开始所有工作,那么它应该返回那个承诺。

-

exports.uploadControl = functions.storage.object().onFinalize(object => {
    return uploadControl.handler(object);
});