使用 spark(免费)firebase 计划使用 Cloud Functions for Firebase 导出 excel

Posted

技术标签:

【中文标题】使用 spark(免费)firebase 计划使用 Cloud Functions for Firebase 导出 excel【英文标题】:Export excel with Cloud Functions for Firebase using spark (free) firebase plan 【发布时间】:2018-03-20 14:53:05 【问题描述】:

我在 Node.js 中使用 Cloud Functions for Firebase,在其中我使用 excel4node lib 从对象导出 excel 文档,现在的问题是,在 wb.write('Excel.xlsx'); 之后,我必须将该 excel 文件实际保存在某处,然后才能将其发送到用户可以下载它的前端。

我想做什么:

    我知道 Firebase 有 Cloud Storage,但由于某些奇怪的原因,只有 google 知道,根据这篇文章:TypeError: firebase.storage is not a function Firebase Storage 不再与 Node.js 一起使用。

    我还阅读了有关 Google Cloud 存储的信息,但这只是通过付费服务。

    这里有一个教程:https://mashe.hawksey.info/2017/06/cloud-functions-for-firebase-in-google-apps-script/,但你需要有一个付费计划。

我的问题是:是否有任何免费的方法可以使用 firebase 和 Nodejs 进行此导出,以便我能够将导出的 excel 保存在某处并将其输出到前端,以便从用户那里下载?

【问题讨论】:

【参考方案1】:

您在第 3 条教程中发布的链接只需要付费计划,因为它发出外部 HTTP 请求。如果你只是使用内部存储,你可以这样做:

const path = require('path');
const os = require('os');
const fs = require('fs');

var bucket = admin.storage().bucket();

//cloud functions can only write to the temporary directory
const tempFilePath = path.join(os.tmpdir(), "Excel.xlsx");

//creates and writes the file to the local temporary directory 
//and then retrieves the newly created file for uploading
wb.write(tempFilePath, function (err, stats) 
          if (err) 
              console.error(err);
            else 
              console.log("File written.");
              fs.readFile(tempFilePath, function (err, data) 
                if (err) 
                  throw err;
                
                var uploadTask = bucket.upload(tempFilePath, 
                destination: "excelFileFolder/Excel.xlsx");
// Uploads the excel file to a folder called excelFileFolder in your firebase storage

【讨论】:

以上是关于使用 spark(免费)firebase 计划使用 Cloud Functions for Firebase 导出 excel的主要内容,如果未能解决你的问题,请参考以下文章

Spark 计划中 Firebase Cloud Functions 的“Google 拥有的服务”的定义

如果我创建两三个数据库但使用在 spark 计划的限制范围内,那么 firebase Blaze 计划的成本是多少?

Firebase Spark 计划云消息传递限制 [重复]

与 firebase 实时数据库定价模型相关的困惑

Firebase 存储配额在免费计划中重置的天数

firebase OTP是免费的还是使用费?