我在Node.js中使用Cloud Functions for Firebase,我使用excel4node lib从对象导出excel文档,现在的问题是wb.write('Excel.xlsx');
之后我必须在发送之前将excel文件保存到某个地方在用户可以下载它的前端。
我试图做的事情:
我知道有适用于Firebase的云存储,但出于某些奇怪的原因,只有谷歌知道并且根据这篇文章:TypeError: firebase.storage is not a function Firebase存储不再与Node.js一起使用。
我还了解了Google云存储,但这只是通过付费服务。
此处有一个教程:https://mashe.hawksey.info/2017/06/cloud-functions-for-firebase-in-google-apps-script/但您需要再次制定付费方案。
我的问题是:有没有任何免费方法可以使用firebase和Nodejs进行导出,这样我就可以将导出的excel保存到某个地方并将其输出到前端,以便从用户下载? / p>
答案 0 :(得分:2)
您在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