如何使用firebase函数返回保存在firebase存储中的文件的json内容

Posted

技术标签:

【中文标题】如何使用firebase函数返回保存在firebase存储中的文件的json内容【英文标题】:How to use firebase functions to return the json content of a file saved in firebase storage 【发布时间】:2020-11-25 00:19:07 【问题描述】:

我想经常从云端更新客户端 indexeddb 数据存储。 所以我在想的是调用firebase函数并让函数在firebase存储中获取一个更新的json文件,然后将该json文件的内容返回给客户端,客户端随后将更新indexeddb。

我试图用这个代码返回这个json file

exports.updateProductCatalogue = functions.https.onCall(async (data, context) => 
    const filepath = data.filepath
    const bucketname = data.bucket

     
    const bucket = storage.bucket();
    const remoteFile = bucket.file("storeid.json");

    let buffer = '';
    remoteFile.createReadStream()
    .on('error', function(err) console.log(err))
    .on('data', function(response) 
        buffer += response
    )
    .on('end', function() 
        //console.log(buffer);
        return buffer
     
    )
  )

当我尝试将代码部署到云时,它会抛出此错误

firebase-functions/functions/node_modules/@google-cloud/storage/node_modules/p-limit/index.js:30
     catch 
            ^

SyntaxError: Unexpected token 
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:617:28)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)

我能够将错误来源缩小到此代码

 const bucket = storage.bucket();

如何通过 firebase 函数返回文件中的 json 内容?

【问题讨论】:

【参考方案1】:

这不是您的代码(呸!)的问题,而是您的项目配置的问题。 Try using node 10+ to address the exception syntax error。更新node+npm后别忘了更新package.json


"...": "...",
  "engines": 
    "node": "10",
    "npm": "6"
  

【讨论】:

我检查了我的 package.json 并且我是 "node": "10" 您当前安装的版本怎么样?在终端中,尝试node -v & npm -v v8.13.0(node) 和 6.4.1 (npm) 你需要更新你的node版本到10+,试试nvm install-latest-npm,如果你还没有安装nvm,我强烈建议你这样做=)

以上是关于如何使用firebase函数返回保存在firebase存储中的文件的json内容的主要内容,如果未能解决你的问题,请参考以下文章

异步箭头函数预期没有返回值

如何在 firebase 托管的 webapp 中获取 firebase 函数 URL?

Firebase createUserWithEmailAndPassword()返回HTTP POST错误以及错误对象

Python:无法从函数中读取返回值

如何等待异步函数的结果? [复制]

使用 Python 的 Firebase 云函数?