使用 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 拥有的服务”的定义